mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-07 09:32:54 +00:00
return new segment meta
This commit is contained in:
@@ -510,10 +510,12 @@ impl IndexWriter {
|
||||
Ok(self.committed_opstamp)
|
||||
}
|
||||
|
||||
/// Merges a given list of segments
|
||||
/// Merges a given list of segments.
|
||||
///
|
||||
/// If all segments are empty no new segment will be created.
|
||||
///
|
||||
/// `segment_ids` is required to be non-empty.
|
||||
pub fn merge(&mut self, segment_ids: &[SegmentId]) -> FutureResult<()> {
|
||||
pub fn merge(&mut self, segment_ids: &[SegmentId]) -> FutureResult<Option<SegmentMeta>> {
|
||||
let merge_operation = self.segment_updater.make_merge_operation(segment_ids);
|
||||
let segment_updater = self.segment_updater.clone();
|
||||
segment_updater.start_merge(merge_operation)
|
||||
|
||||
@@ -483,7 +483,10 @@ impl SegmentUpdater {
|
||||
// suggested and the moment when it ended up being executed.)
|
||||
//
|
||||
// `segment_ids` is required to be non-empty.
|
||||
pub fn start_merge(&self, merge_operation: MergeOperation) -> FutureResult<()> {
|
||||
pub fn start_merge(
|
||||
&self,
|
||||
merge_operation: MergeOperation,
|
||||
) -> FutureResult<Option<SegmentMeta>> {
|
||||
assert!(
|
||||
!merge_operation.segment_ids().is_empty(),
|
||||
"Segment_ids cannot be empty."
|
||||
@@ -583,8 +586,11 @@ impl SegmentUpdater {
|
||||
&self,
|
||||
merge_operation: MergeOperation,
|
||||
mut after_merge_segment_entry: Option<SegmentEntry>,
|
||||
) -> crate::Result<()> {
|
||||
) -> crate::Result<Option<SegmentMeta>> {
|
||||
let segment_updater = self.clone();
|
||||
let after_merge_segment_meta = after_merge_segment_entry
|
||||
.as_ref()
|
||||
.map(|after_merge_segment_entry| after_merge_segment_entry.meta().clone());
|
||||
self.schedule_task(move || {
|
||||
info!(
|
||||
"End merge {:?}",
|
||||
@@ -600,7 +606,7 @@ impl SegmentUpdater {
|
||||
let segment = index.segment(after_merge_segment_entry.meta().clone());
|
||||
if let Err(advance_deletes_err) = advance_deletes(
|
||||
segment,
|
||||
&mut after_merge_segment_entry,
|
||||
after_merge_segment_entry,
|
||||
committed_opstamp,
|
||||
) {
|
||||
error!(
|
||||
@@ -635,7 +641,7 @@ impl SegmentUpdater {
|
||||
Ok(())
|
||||
})
|
||||
.wait()?;
|
||||
Ok(())
|
||||
Ok(after_merge_segment_meta)
|
||||
}
|
||||
|
||||
/// Wait for current merging threads.
|
||||
|
||||
Reference in New Issue
Block a user