diff --git a/bin/reth/src/node/events.rs b/bin/reth/src/node/events.rs index f2e6a53a90..3187132b7e 100644 --- a/bin/reth/src/node/events.rs +++ b/bin/reth/src/node/events.rs @@ -278,9 +278,9 @@ struct Eta { } impl Eta { - /// Update the ETA given the checkpoint. + /// Update the ETA given the checkpoint, if possible. fn update(&mut self, checkpoint: StageCheckpoint) { - let current = checkpoint.entities(); + let Some(current) = checkpoint.entities() else { return }; if let Some(last_checkpoint_time) = &self.last_checkpoint_time { let processed_since_last = current.processed - self.last_checkpoint.processed; diff --git a/crates/primitives/src/stage/checkpoints.rs b/crates/primitives/src/stage/checkpoints.rs index f6ee35c901..c6de28ff63 100644 --- a/crates/primitives/src/stage/checkpoints.rs +++ b/crates/primitives/src/stage/checkpoints.rs @@ -217,48 +217,33 @@ impl StageCheckpoint { self } - /// Get the underlying [`EntitiesCheckpoint`] to determine the number of entities processed, and - /// the number of total entities to process. - pub fn entities(&self) -> EntitiesCheckpoint { - match self.stage_checkpoint { - Some( - StageUnitCheckpoint::Account(AccountHashingCheckpoint { - progress: entities, .. - }) | - StageUnitCheckpoint::Storage(StorageHashingCheckpoint { - progress: entities, .. - }) | - StageUnitCheckpoint::Entities(entities) | - StageUnitCheckpoint::Execution(ExecutionCheckpoint { progress: entities, .. }) | - StageUnitCheckpoint::Headers(HeadersCheckpoint { progress: entities, .. }) | - StageUnitCheckpoint::IndexHistory(IndexHistoryCheckpoint { - progress: entities, - .. - }), - ) => entities, - None => EntitiesCheckpoint::default(), + /// Get the underlying [`EntitiesCheckpoint`], if any, to determine the number of entities + /// processed, and the number of total entities to process. + pub fn entities(&self) -> Option { + let Some(stage_checkpoint) = self.stage_checkpoint else { return None }; + + match stage_checkpoint { + StageUnitCheckpoint::Account(AccountHashingCheckpoint { + progress: entities, .. + }) | + StageUnitCheckpoint::Storage(StorageHashingCheckpoint { + progress: entities, .. + }) | + StageUnitCheckpoint::Entities(entities) | + StageUnitCheckpoint::Execution(ExecutionCheckpoint { progress: entities, .. }) | + StageUnitCheckpoint::Headers(HeadersCheckpoint { progress: entities, .. }) | + StageUnitCheckpoint::IndexHistory(IndexHistoryCheckpoint { + progress: entities, + .. + }) => Some(entities), } } } impl Display for StageCheckpoint { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self.stage_checkpoint { - Some( - StageUnitCheckpoint::Account(AccountHashingCheckpoint { - progress: entities, .. - }) | - StageUnitCheckpoint::Storage(StorageHashingCheckpoint { - progress: entities, .. - }) | - StageUnitCheckpoint::Entities(entities) | - StageUnitCheckpoint::Execution(ExecutionCheckpoint { progress: entities, .. }) | - StageUnitCheckpoint::Headers(HeadersCheckpoint { progress: entities, .. }) | - StageUnitCheckpoint::IndexHistory(IndexHistoryCheckpoint { - progress: entities, - .. - }), - ) => entities.fmt(f), + match self.entities() { + Some(entities) => entities.fmt(f), None => write!(f, "{}", self.block_number), } }