1use serde::Deserialize;
24
25#[derive(Debug, Clone, Deserialize)]
30pub struct SyncEngineConfig {
31 #[serde(default)]
33 pub redis_url: Option<String>,
34
35 #[serde(default)]
38 pub redis_prefix: Option<String>,
39
40 #[serde(default)]
42 pub sql_url: Option<String>,
43
44 #[serde(default = "default_l1_max_bytes")]
46 pub l1_max_bytes: usize,
47
48 #[serde(default = "default_max_payload_bytes")]
58 pub max_payload_bytes: usize,
59
60 #[serde(default = "default_backpressure_warn")]
62 pub backpressure_warn: f64,
63 #[serde(default = "default_backpressure_critical")]
64 pub backpressure_critical: f64,
65
66 #[serde(default = "default_batch_flush_ms")]
68 pub batch_flush_ms: u64,
69 #[serde(default = "default_batch_flush_count")]
70 pub batch_flush_count: usize,
71 #[serde(default = "default_batch_flush_bytes")]
72 pub batch_flush_bytes: usize,
73
74 #[serde(default = "default_cuckoo_warmup_batch_size")]
76 pub cuckoo_warmup_batch_size: usize,
77
78 #[serde(default)]
80 pub wal_path: Option<String>,
81
82 #[serde(default)]
84 pub wal_max_items: Option<u64>,
85
86 #[serde(default = "default_wal_drain_batch_size")]
88 pub wal_drain_batch_size: usize,
89
90 #[serde(default = "default_cf_snapshot_interval_secs")]
92 pub cf_snapshot_interval_secs: u64,
93
94 #[serde(default = "default_cf_snapshot_insert_threshold")]
96 pub cf_snapshot_insert_threshold: u64,
97
98 #[serde(default = "default_redis_eviction_enabled")]
100 pub redis_eviction_enabled: bool,
101
102 #[serde(default = "default_redis_eviction_start")]
104 pub redis_eviction_start: f64,
105
106 #[serde(default = "default_redis_eviction_target")]
108 pub redis_eviction_target: f64,
109
110 #[serde(default = "default_merkle_calc_enabled")]
116 pub merkle_calc_enabled: bool,
117
118 #[serde(default)]
123 pub merkle_calc_jitter_ms: u64,
124}
125
126fn default_l1_max_bytes() -> usize { 256 * 1024 * 1024 } fn default_max_payload_bytes() -> usize { 16 * 1024 * 1024 } fn default_backpressure_warn() -> f64 { 0.7 }
129fn default_backpressure_critical() -> f64 { 0.9 }
130fn default_batch_flush_ms() -> u64 { 100 }
131fn default_batch_flush_count() -> usize { 1000 }
132fn default_batch_flush_bytes() -> usize { 1024 * 1024 } fn default_cuckoo_warmup_batch_size() -> usize { 10000 }
134fn default_wal_drain_batch_size() -> usize { 100 }
135fn default_cf_snapshot_interval_secs() -> u64 { 30 }
136fn default_cf_snapshot_insert_threshold() -> u64 { 10_000 }
137fn default_redis_eviction_enabled() -> bool { true }
138fn default_redis_eviction_start() -> f64 { 0.75 }
139fn default_redis_eviction_target() -> f64 { 0.60 }
140fn default_merkle_calc_enabled() -> bool { true }
141
142impl Default for SyncEngineConfig {
143 fn default() -> Self {
144 Self {
145 redis_url: None,
146 sql_url: None,
147 redis_prefix: None,
148 l1_max_bytes: default_l1_max_bytes(),
149 max_payload_bytes: default_max_payload_bytes(),
150 backpressure_warn: default_backpressure_warn(),
151 backpressure_critical: default_backpressure_critical(),
152 batch_flush_ms: default_batch_flush_ms(),
153 batch_flush_count: default_batch_flush_count(),
154 batch_flush_bytes: default_batch_flush_bytes(),
155 cuckoo_warmup_batch_size: default_cuckoo_warmup_batch_size(),
156 wal_path: None,
157 wal_max_items: None,
158 wal_drain_batch_size: default_wal_drain_batch_size(),
159 cf_snapshot_interval_secs: default_cf_snapshot_interval_secs(),
160 cf_snapshot_insert_threshold: default_cf_snapshot_insert_threshold(),
161 redis_eviction_enabled: default_redis_eviction_enabled(),
162 redis_eviction_start: default_redis_eviction_start(),
163 redis_eviction_target: default_redis_eviction_target(),
164 merkle_calc_enabled: default_merkle_calc_enabled(),
165 merkle_calc_jitter_ms: 0,
166 }
167 }
168}