mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-04 00:02:55 +00:00
fix potential endless loop in merge (#2457)
avoid single segments lists without deletes as merge candidates, as they will be moved to a merge operation and filtered for merging in the next consider_merge_options call. In rare cases this may end up in a endless merge loop where only single segments where nothing is to be done are merged.
This commit is contained in:
@@ -542,7 +542,13 @@ impl SegmentUpdater {
|
||||
}
|
||||
|
||||
fn consider_merge_options(&self) {
|
||||
let (committed_segments, uncommitted_segments) = self.get_mergeable_segments();
|
||||
let (mut committed_segments, mut uncommitted_segments) = self.get_mergeable_segments();
|
||||
if committed_segments.len() == 1 && committed_segments[0].num_deleted_docs() == 0 {
|
||||
committed_segments.clear();
|
||||
}
|
||||
if uncommitted_segments.len() == 1 && uncommitted_segments[0].num_deleted_docs() == 0 {
|
||||
uncommitted_segments.clear();
|
||||
}
|
||||
|
||||
// Committed segments cannot be merged with uncommitted_segments.
|
||||
// We therefore consider merges using these two sets of segments independently.
|
||||
|
||||
Reference in New Issue
Block a user