From 1685593f386adf57e697a21ad41700d284aeb81b Mon Sep 17 00:00:00 2001 From: Alex Chi Z Date: Fri, 21 Jul 2023 10:15:44 -0400 Subject: [PATCH] stable merge and sort in compaction (#4573) Per discussion at https://github.com/neondatabase/neon/pull/4537#discussion_r1242086217, it looks like a better idea to use `<` instead of `<=` for all these comparisons. --------- Signed-off-by: Alex Chi Z --- pageserver/src/tenant/timeline.rs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index c6ceae500b..616d184393 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -3452,7 +3452,7 @@ impl Timeline { let mut prev: Option = None; for (next_key, _next_lsn, _size) in itertools::process_results( deltas_to_compact.iter().map(|l| l.key_iter(ctx)), - |iter_iter| iter_iter.kmerge_by(|a, b| a.0 <= b.0), + |iter_iter| iter_iter.kmerge_by(|a, b| a.0 < b.0), )? { if let Some(prev_key) = prev { // just first fast filter @@ -3492,11 +3492,7 @@ impl Timeline { iter_iter.kmerge_by(|a, b| { if let Ok((a_key, a_lsn, _)) = a { if let Ok((b_key, b_lsn, _)) = b { - match a_key.cmp(b_key) { - Ordering::Less => true, - Ordering::Equal => a_lsn <= b_lsn, - Ordering::Greater => false, - } + (a_key, a_lsn) < (b_key, b_lsn) } else { false } @@ -3514,11 +3510,7 @@ impl Timeline { iter_iter.kmerge_by(|a, b| { let (a_key, a_lsn, _) = a; let (b_key, b_lsn, _) = b; - match a_key.cmp(b_key) { - Ordering::Less => true, - Ordering::Equal => a_lsn <= b_lsn, - Ordering::Greater => false, - } + (a_key, a_lsn) < (b_key, b_lsn) }) }, )?;