From 740bf04351afff9c14e88f95c9ccbe473d333a40 Mon Sep 17 00:00:00 2001 From: Arsenii Kulikov Date: Tue, 4 Feb 2025 15:18:33 +0400 Subject: [PATCH] fix: return correct `prune_target_block` when syncing (#14181) --- crates/prune/types/src/mode.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/prune/types/src/mode.rs b/crates/prune/types/src/mode.rs index de9b9e6dc0..75194e01be 100644 --- a/crates/prune/types/src/mode.rs +++ b/crates/prune/types/src/mode.rs @@ -48,8 +48,8 @@ impl PruneMode { } Self::Before(n) if *n == tip + 1 && purpose.is_static_file() => Some((tip, *self)), Self::Before(n) if *n > tip => None, // Nothing to prune yet - Self::Before(n) if tip - n >= segment.min_blocks(purpose) => { - Some(((*n).saturating_sub(1), *self)) + Self::Before(n) => { + (tip - n >= segment.min_blocks(purpose)).then(|| ((*n).saturating_sub(1), *self)) } _ => return Err(PruneSegmentError::Configuration(segment)), }; @@ -113,7 +113,8 @@ mod tests { PruneMode::Before(tip - MINIMUM_PRUNING_DISTANCE - 1), Ok(Some(tip - MINIMUM_PRUNING_DISTANCE - 2)), ), - (PruneMode::Before(tip - 1), Err(PruneSegmentError::Configuration(segment))), + // Nothing to prune + (PruneMode::Before(tip - 1), Ok(None)), ]; for (index, (mode, expected_result)) in tests.into_iter().enumerate() {