From 3ccd93ac67f2c3e58b400d9f2da77264b4544676 Mon Sep 17 00:00:00 2001 From: Evance Souamoro Date: Wed, 21 Apr 2021 15:20:05 +0000 Subject: [PATCH] fixed merge policy bug --- src/indexer/log_merge_policy.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/indexer/log_merge_policy.rs b/src/indexer/log_merge_policy.rs index 455c7d455..b62aa9a60 100644 --- a/src/indexer/log_merge_policy.rs +++ b/src/indexer/log_merge_policy.rs @@ -57,8 +57,8 @@ impl MergePolicy for LogMergePolicy { let mut size_sorted_tuples = segments .iter() .map(SegmentMeta::num_docs) - .filter(|s| s <= &(self.max_merge_size as u32)) .enumerate() + .filter(|(_, s)| s <= &(self.max_merge_size as u32)) .collect::>(); size_sorted_tuples.sort_by(|x, y| y.1.cmp(&(x.1))); @@ -216,12 +216,20 @@ mod tests { create_random_segment_meta(1_000_000), create_random_segment_meta(100_001), create_random_segment_meta(100_000), + create_random_segment_meta(1_000_001), create_random_segment_meta(100_000), create_random_segment_meta(100_000), + create_random_segment_meta(1_500_000), ]; let result_list = test_merge_policy().compute_merge_candidates(&test_input); // Do not include large segments assert_eq!(result_list.len(), 1); - assert_eq!(result_list[0].0.len(), 3) + assert_eq!(result_list[0].0.len(), 3); + + // Making sure merge policy points to the correct index of the original input + assert_eq!(result_list[0].0[0], test_input[2].id()); + assert_eq!(result_list[0].0[1], test_input[4].id()); + assert_eq!(result_list[0].0[2], test_input[5].id()); } + }