From d742d3277a34787c408478951a607a77d02b47ef Mon Sep 17 00:00:00 2001 From: Ming Ying Date: Sat, 7 Dec 2024 16:37:34 -0500 Subject: [PATCH] undo changes to segment_updater.rs --- src/indexer/segment_updater.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs index 9ecc80523..875913d83 100644 --- a/src/indexer/segment_updater.rs +++ b/src/indexer/segment_updater.rs @@ -264,6 +264,7 @@ pub(crate) struct InnerSegmentUpdater { // // This should be up to date as all update happen through // the unique active `SegmentUpdater`. + active_index_meta: RwLock>, pool: ThreadPool, merge_thread_pool: ThreadPool, @@ -313,6 +314,7 @@ impl SegmentUpdater { })?; let index_meta = index.load_metas()?; Ok(SegmentUpdater(Arc::new(InnerSegmentUpdater { + active_index_meta: RwLock::new(Arc::new(index_meta)), pool, merge_thread_pool, index, @@ -418,6 +420,7 @@ impl SegmentUpdater { }; // TODO add context to the error. save_metas(&index_meta, directory.box_clone().borrow_mut())?; + self.store_meta(&index_meta); } Ok(()) } @@ -458,8 +461,12 @@ impl SegmentUpdater { }) } + fn store_meta(&self, index_meta: &IndexMeta) { + *self.active_index_meta.write().unwrap() = Arc::new(index_meta.clone()); + } + fn load_meta(&self) -> Arc { - Arc::new(self.index.load_metas().expect("Failed to load meta")) + self.active_index_meta.read().unwrap().clone() } pub(crate) fn make_merge_operation(&self, segment_ids: &[SegmentId]) -> MergeOperation {