1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
// Copyright (c) The Diem Core Contributors
// SPDX-License-Identifier: Apache-2.0
// Copyright 2021 Conflux Foundation. All rights reserved.
// Conflux is free software and distributed under GNU General Public License.
// See http://www.gnu.org/licenses/
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct StateSyncConfig {
// Size of chunk to request for state synchronization
pub chunk_limit: u64,
// The timeout of the state sync client to process a commit notification
// (in milliseconds)
pub client_commit_timeout_ms: u64,
// default timeout used for long polling to remote peer
pub long_poll_timeout_ms: u64,
// valid maximum chunk limit for sanity check
pub max_chunk_limit: u64,
// valid maximum timeout limit for sanity check
pub max_timeout_ms: u64,
// The timeout of the state sync coordinator to receive a commit ack from
// mempool (in milliseconds)
pub mempool_commit_timeout_ms: u64,
// default timeout to make state sync progress by sending chunk requests to
// a certain number of networks if no progress is made by sending chunk
// requests to a number of networks, the next sync request will be
// multicasted, i.e. sent to more networks
pub multicast_timeout_ms: u64,
// The timeout for ensuring sync requests are making progress (i.e., the
// maximum time between commits when processing a sync request).
pub sync_request_timeout_ms: u64,
// interval used for checking state synchronization progress
pub tick_interval_ms: u64,
}
impl Default for StateSyncConfig {
fn default() -> Self {
Self {
chunk_limit: 1000,
client_commit_timeout_ms: 5_000,
long_poll_timeout_ms: 10_000,
max_chunk_limit: 1000,
max_timeout_ms: 120_000,
mempool_commit_timeout_ms: 5_000,
multicast_timeout_ms: 30_000,
sync_request_timeout_ms: 60_000,
tick_interval_ms: 100,
}
}
}