mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-09 07:17:56 -05:00
perf: optimize SyncHeight event handling to avoid recursive calls (#19372)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
@@ -52,17 +52,7 @@ impl MetricsListener {
|
||||
trace!(target: "sync::metrics", ?event, "Metric event received");
|
||||
match event {
|
||||
MetricEvent::SyncHeight { height } => {
|
||||
for stage_id in StageId::ALL {
|
||||
self.handle_event(MetricEvent::StageCheckpoint {
|
||||
stage_id,
|
||||
checkpoint: StageCheckpoint {
|
||||
block_number: height,
|
||||
stage_checkpoint: None,
|
||||
},
|
||||
max_block_number: Some(height),
|
||||
elapsed: Duration::default(),
|
||||
});
|
||||
}
|
||||
self.update_all_stages_height(height);
|
||||
}
|
||||
MetricEvent::StageCheckpoint { stage_id, checkpoint, max_block_number, elapsed } => {
|
||||
let stage_metrics = self.sync_metrics.get_stage_metrics(stage_id);
|
||||
@@ -83,6 +73,17 @@ impl MetricsListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Updates all stage checkpoints to the given height efficiently.
|
||||
fn update_all_stages_height(&mut self, height: BlockNumber) {
|
||||
for stage_id in StageId::ALL {
|
||||
let stage_metrics = self.sync_metrics.get_stage_metrics(stage_id);
|
||||
let height_f64 = height as f64;
|
||||
stage_metrics.checkpoint.set(height_f64);
|
||||
stage_metrics.entities_processed.set(height_f64);
|
||||
stage_metrics.entities_total.set(height_f64);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Future for MetricsListener {
|
||||
|
||||
Reference in New Issue
Block a user