fix(transaction-pool): finalized block number should never decrease (#20781)

This commit is contained in:
bigbear
2026-01-06 15:16:22 +02:00
committed by GitHub
parent d488a7d130
commit 485f5b36ce

View File

@@ -604,10 +604,10 @@ impl FinalizedBlockTracker {
/// Updates the tracked finalized block and returns the new finalized block if it changed
fn update(&mut self, finalized_block: Option<BlockNumber>) -> Option<BlockNumber> {
let finalized = finalized_block?;
self.last_finalized_block
.replace(finalized)
.is_none_or(|last| last < finalized)
.then_some(finalized)
self.last_finalized_block.is_none_or(|last| last < finalized).then(|| {
self.last_finalized_block = Some(finalized);
finalized
})
}
}
@@ -934,7 +934,8 @@ mod tests {
fn test_update_with_lower_finalized_block() {
let mut tracker = FinalizedBlockTracker::new(Some(20));
assert_eq!(tracker.update(Some(15)), None);
assert_eq!(tracker.last_finalized_block, Some(15));
// finalized block should NOT go backwards
assert_eq!(tracker.last_finalized_block, Some(20));
}
#[test]