diff --git a/src/indexer/index_writer.rs b/src/indexer/index_writer.rs index 0ba779ec3..8285a132f 100644 --- a/src/indexer/index_writer.rs +++ b/src/indexer/index_writer.rs @@ -352,7 +352,7 @@ impl IndexWriter { } /// Merges a given list of segments - pub fn merge(&mut self, segment_ids: &[SegmentId]) -> impl Future { + pub fn merge(&mut self, segment_ids: &[SegmentId]) -> impl Future { self.segment_updater.start_merge(segment_ids) } diff --git a/src/indexer/segment_manager.rs b/src/indexer/segment_manager.rs index ad35702ef..1991ebda4 100644 --- a/src/indexer/segment_manager.rs +++ b/src/indexer/segment_manager.rs @@ -175,9 +175,10 @@ impl SegmentManager { registers_lock.uncommitted.add_segment_entry(segment_entry); } - pub fn end_merge(&self, merged_segment_metas: &[SegmentMeta], merged_segment_entry: SegmentEntry) { + pub fn end_merge(&self, merged_segment_metas: &[SegmentMeta], merged_segment_meta: SegmentMeta) { let mut registers_lock = self.write(); let merged_segment_ids: Vec = merged_segment_metas.iter().map(|meta| meta.id()).collect(); + let merged_segment_entry = SegmentEntry::new(merged_segment_meta); if registers_lock.uncommitted.contains_all(&merged_segment_ids) { for segment_id in &merged_segment_ids { registers_lock.uncommitted.remove_segment(segment_id); diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs index 1c300ef5c..4d3675a26 100644 --- a/src/indexer/segment_updater.rs +++ b/src/indexer/segment_updater.rs @@ -97,7 +97,7 @@ struct InnerSegmentUpdater { segment_manager: SegmentManager, merge_policy: RwLock>, merging_thread_id: AtomicUsize, - merging_threads: RwLock>>>, + merging_threads: RwLock>>>, generation: AtomicUsize, delete_queue: DeleteQueue, } @@ -202,7 +202,7 @@ impl SegmentUpdater { } - pub fn start_merge(&self, segment_ids: &[SegmentId]) -> impl Future { + pub fn start_merge(&self, segment_ids: &[SegmentId]) -> impl Future { self.0.segment_manager.start_merge(segment_ids); let segment_updater_clone = self.clone(); @@ -263,14 +263,13 @@ impl SegmentUpdater { let mut segment_meta = SegmentMeta::new(merged_segment.id()); segment_meta.set_max_doc(num_docs); - let segment_entry = SegmentEntry::new(segment_meta); segment_updater_clone - .end_merge(segment_metas.clone(), segment_entry.clone()) + .end_merge(segment_metas.clone(), segment_meta.clone()) .wait() .unwrap(); - merging_future_send.complete(segment_entry.clone()); + merging_future_send.complete(segment_meta); segment_updater_clone.0.merging_threads.write().unwrap().remove(&merging_thread_id); - Ok(segment_entry) + Ok(()) }); self.0.merging_threads.write().unwrap().insert(merging_thread_id, merging_join_handle); merging_future_recv @@ -293,10 +292,10 @@ impl SegmentUpdater { fn end_merge(&self, merged_segment_metas: Vec, - resulting_segment_entry: SegmentEntry) -> impl Future { + segment_meta: SegmentMeta) -> impl Future { self.run_async(move |segment_updater| { - segment_updater.0.segment_manager.end_merge(&merged_segment_metas, resulting_segment_entry); + segment_updater.0.segment_manager.end_merge(&merged_segment_metas, segment_meta); let mut directory = segment_updater.0.index.directory().box_clone(); let segment_metas = segment_updater.0.segment_manager.committed_segment_metas(); save_metas( @@ -347,7 +346,7 @@ mod tests { index_writer.set_merge_policy(box MergeWheneverPossible); { - for i in 0..100 { + for _ in 0..100 { index_writer.add_document(doc!(text_field=>"a")); index_writer.add_document(doc!(text_field=>"b")); } @@ -355,7 +354,7 @@ mod tests { } { - for i in 0..100 { + for _ in 0..100 { index_writer.add_document(doc!(text_field=>"c")); index_writer.add_document(doc!(text_field=>"d")); } @@ -374,7 +373,7 @@ mod tests { assert!(index_writer.commit().is_ok()); } - index.load_searchers(); + index.load_searchers().unwrap(); assert_eq!(index.searcher().segment_readers().len(), 3); assert_eq!(index.searcher().num_docs(), 302); @@ -383,7 +382,7 @@ mod tests { .expect("waiting for merging threads"); } - index.load_searchers(); + index.load_searchers().unwrap(); assert_eq!(index.searcher().segment_readers().len(), 2); assert_eq!(index.searcher().num_docs(), 302); }