reth_snap_sync/
metrics.rs1use alloy_primitives::{B256, U256};
4use reth_metrics::{
5 metrics::{Counter, Gauge},
6 Metrics,
7};
8
9#[derive(Clone, Metrics)]
11#[metrics(scope = "sync.snap")]
12pub(crate) struct SnapSyncMetrics {
13 pub(crate) pivot_block: Gauge,
15 pub(crate) applied_block: Gauge,
17 pub(crate) account_progress: Gauge,
19 pub(crate) restarts: Counter,
21}
22
23impl SnapSyncMetrics {
24 pub(crate) fn clear_attempt(&self) {
26 self.pivot_block.set(0.0);
27 self.applied_block.set(0.0);
28 self.account_progress.set(0.0);
29 }
30
31 pub(crate) fn set_account_progress(&self, next: Option<B256>) {
33 let progress = next
34 .map_or(1.0, |next| U256::from_be_bytes(next.0).as_limbs()[3] as f64 / u64::MAX as f64);
35 self.account_progress.set(progress);
36 }
37}