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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct StateSyncConfig {
pub data_streaming_service: DataStreamingServiceConfig,
pub aptos_data_client: AptosDataClientConfig,
pub state_sync_driver: StateSyncDriverConfig,
pub storage_service: StorageServiceConfig,
}
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
pub enum BootstrappingMode {
ApplyTransactionOutputsFromGenesis,
DownloadLatestStates,
ExecuteTransactionsFromGenesis,
}
impl BootstrappingMode {
pub fn to_label(&self) -> &'static str {
match self {
BootstrappingMode::ApplyTransactionOutputsFromGenesis => {
"apply_transaction_outputs_from_genesis"
}
BootstrappingMode::DownloadLatestStates => "download_latest_states",
BootstrappingMode::ExecuteTransactionsFromGenesis => {
"execute_transactions_from_genesis"
}
}
}
}
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
pub enum ContinuousSyncingMode {
ApplyTransactionOutputs,
ExecuteTransactions,
}
impl ContinuousSyncingMode {
pub fn to_label(&self) -> &'static str {
match self {
ContinuousSyncingMode::ApplyTransactionOutputs => "apply_transaction_outputs",
ContinuousSyncingMode::ExecuteTransactions => "execute_transactions",
}
}
}
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct StateSyncDriverConfig {
pub bootstrapping_mode: BootstrappingMode,
pub commit_notification_timeout_ms: u64,
pub continuous_syncing_mode: ContinuousSyncingMode,
pub progress_check_interval_ms: u64,
pub max_connection_deadline_secs: u64,
pub max_consecutive_stream_notifications: u64,
pub max_pending_data_chunks: u64,
pub max_stream_wait_time_ms: u64,
pub num_versions_to_skip_snapshot_sync: u64,
}
impl Default for StateSyncDriverConfig {
fn default() -> Self {
Self {
bootstrapping_mode: BootstrappingMode::ApplyTransactionOutputsFromGenesis,
commit_notification_timeout_ms: 5000,
continuous_syncing_mode: ContinuousSyncingMode::ApplyTransactionOutputs,
progress_check_interval_ms: 100,
max_connection_deadline_secs: 10,
max_consecutive_stream_notifications: 10,
max_pending_data_chunks: 100,
max_stream_wait_time_ms: 5000,
num_versions_to_skip_snapshot_sync: 10_000_000,
}
}
}
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct StorageServiceConfig {
pub max_concurrent_requests: u64,
pub max_epoch_chunk_size: u64,
pub max_lru_cache_size: u64,
pub max_network_channel_size: u64,
pub max_state_chunk_size: u64,
pub max_subscription_period_ms: u64,
pub max_transaction_chunk_size: u64,
pub max_transaction_output_chunk_size: u64,
pub storage_summary_refresh_interval_ms: u64,
}
impl Default for StorageServiceConfig {
fn default() -> Self {
Self {
max_concurrent_requests: 4000,
max_epoch_chunk_size: 100,
max_lru_cache_size: 100,
max_network_channel_size: 4000,
max_state_chunk_size: 1000,
max_subscription_period_ms: 10000,
max_transaction_chunk_size: 1000,
max_transaction_output_chunk_size: 1000,
storage_summary_refresh_interval_ms: 50,
}
}
}
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct DataStreamingServiceConfig {
pub global_summary_refresh_interval_ms: u64,
pub max_concurrent_requests: u64,
pub max_data_stream_channel_sizes: u64,
pub max_request_retry: u64,
pub max_notification_id_mappings: u64,
pub progress_check_interval_ms: u64,
}
impl Default for DataStreamingServiceConfig {
fn default() -> Self {
Self {
global_summary_refresh_interval_ms: 50,
max_concurrent_requests: 2,
max_data_stream_channel_sizes: 1000,
max_request_retry: 3,
max_notification_id_mappings: 2000,
progress_check_interval_ms: 100,
}
}
}
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct AptosDataClientConfig {
pub max_num_in_flight_priority_polls: u64,
pub max_num_in_flight_regular_polls: u64,
pub response_timeout_ms: u64,
pub summary_poll_interval_ms: u64,
pub use_compression: bool,
}
impl Default for AptosDataClientConfig {
fn default() -> Self {
Self {
max_num_in_flight_priority_polls: 10,
max_num_in_flight_regular_polls: 10,
response_timeout_ms: 5000,
summary_poll_interval_ms: 200,
use_compression: true,
}
}
}