mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-07 01:32:53 +00:00
Merge branch 'issues/122'
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tantivy"
|
name = "tantivy"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
authors = ["Paul Masurel <paul.masurel@gmail.com>"]
|
authors = ["Paul Masurel <paul.masurel@gmail.com>"]
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
@@ -418,6 +418,12 @@ impl IndexWriter {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Detects and removes the files that
|
||||||
|
/// are not used by the index anymore.
|
||||||
|
pub fn garbage_collect_files(&mut self) -> Result<()> {
|
||||||
|
self.segment_updater.garbage_collect_files()
|
||||||
|
}
|
||||||
|
|
||||||
/// Merges a given list of segments
|
/// Merges a given list of segments
|
||||||
pub fn merge(&mut self, segment_ids: &[SegmentId]) -> impl Future<Item=SegmentMeta, Error=Canceled> {
|
pub fn merge(&mut self, segment_ids: &[SegmentId]) -> impl Future<Item=SegmentMeta, Error=Canceled> {
|
||||||
self.segment_updater.start_merge(segment_ids)
|
self.segment_updater.start_merge(segment_ids)
|
||||||
|
|||||||
@@ -264,18 +264,27 @@ impl SegmentUpdater {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn garbage_collect_files(&self) -> Result<()> {
|
||||||
|
self.run_async(move |segment_updater| {
|
||||||
|
segment_updater.garbage_collect_files_exec();
|
||||||
|
}).wait()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn garbage_collect_files_exec(&self) {
|
||||||
|
let living_files = self.0.segment_manager.list_files();
|
||||||
|
let mut index = self.0.index.clone();
|
||||||
|
index.directory_mut().garbage_collect(living_files);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn commit(&self, opstamp: u64) -> Result<()> {
|
pub fn commit(&self, opstamp: u64) -> Result<()> {
|
||||||
self.run_async(move |segment_updater| {
|
self.run_async(move |segment_updater| {
|
||||||
let mut index = segment_updater.0.index.clone();
|
|
||||||
|
|
||||||
if segment_updater.is_alive() {
|
if segment_updater.is_alive() {
|
||||||
let segment_entries = segment_updater
|
let segment_entries = segment_updater
|
||||||
.purge_deletes(opstamp)
|
.purge_deletes(opstamp)
|
||||||
.expect("Failed purge deletes");
|
.expect("Failed purge deletes");
|
||||||
segment_updater.0.segment_manager.commit(segment_entries);
|
segment_updater.0.segment_manager.commit(segment_entries);
|
||||||
segment_updater.save_metas(opstamp);
|
segment_updater.save_metas(opstamp);
|
||||||
let living_files = segment_updater.0.segment_manager.list_files();
|
segment_updater.garbage_collect_files_exec();
|
||||||
index.directory_mut().garbage_collect(living_files);
|
|
||||||
segment_updater.consider_merge_options();
|
segment_updater.consider_merge_options();
|
||||||
}
|
}
|
||||||
}).wait()
|
}).wait()
|
||||||
|
|||||||
Reference in New Issue
Block a user