@@ -483,7 +483,10 @@ impl SegmentUpdater {
483
483
// suggested and the moment when it ended up being executed.)
484
484
//
485
485
// `segment_ids` is required to be non-empty.
486
- pub fn start_merge ( & self , merge_operation : MergeOperation ) -> FutureResult < ( ) > {
486
+ pub fn start_merge (
487
+ & self ,
488
+ merge_operation : MergeOperation ,
489
+ ) -> FutureResult < Option < SegmentMeta > > {
487
490
assert ! (
488
491
!merge_operation. segment_ids( ) . is_empty( ) ,
489
492
"Segment_ids cannot be empty."
@@ -583,8 +586,11 @@ impl SegmentUpdater {
583
586
& self ,
584
587
merge_operation : MergeOperation ,
585
588
mut after_merge_segment_entry : Option < SegmentEntry > ,
586
- ) -> crate :: Result < ( ) > {
589
+ ) -> crate :: Result < Option < SegmentMeta > > {
587
590
let segment_updater = self . clone ( ) ;
591
+ let after_merge_segment_meta = after_merge_segment_entry
592
+ . as_ref ( )
593
+ . map ( |after_merge_segment_entry| after_merge_segment_entry. meta ( ) . clone ( ) ) ;
588
594
self . schedule_task ( move || {
589
595
info ! (
590
596
"End merge {:?}" ,
@@ -600,7 +606,7 @@ impl SegmentUpdater {
600
606
let segment = index. segment ( after_merge_segment_entry. meta ( ) . clone ( ) ) ;
601
607
if let Err ( advance_deletes_err) = advance_deletes (
602
608
segment,
603
- & mut after_merge_segment_entry,
609
+ after_merge_segment_entry,
604
610
committed_opstamp,
605
611
) {
606
612
error ! (
@@ -635,7 +641,7 @@ impl SegmentUpdater {
635
641
Ok ( ( ) )
636
642
} )
637
643
. wait ( ) ?;
638
- Ok ( ( ) )
644
+ Ok ( after_merge_segment_meta )
639
645
}
640
646
641
647
/// Wait for current merging threads.
0 commit comments