fix(engine): clamp pending finalized/safe block to persisted height (#22783)

Co-authored-by: joshieDo <93316087+joshieDo@users.noreply.github.com>
This commit is contained in:
Derek Cofausper
2026-03-04 09:26:33 -08:00
committed by GitHub
parent 22642baf5b
commit fc4d88bf99

View File

@@ -157,10 +157,18 @@ where
provider_rw.save_blocks(blocks, SaveBlocksMode::Full)?;
if let Some(finalized) = pending_finalized {
provider_rw.save_finalized_block_number(finalized)?;
// Clamp to the highest persisted block so that on restart
// `last_finalized_block_number` never points past available state.
provider_rw.save_finalized_block_number(finalized.min(last.number))?;
if finalized > last.number {
self.pending_finalized_block = Some(finalized);
}
}
if let Some(safe) = pending_safe {
provider_rw.save_safe_block_number(safe)?;
provider_rw.save_safe_block_number(safe.min(last.number))?;
if safe > last.number {
self.pending_safe_block = Some(safe);
}
}
if self.pruner.is_pruning_needed(last.number) {