From 867bb2c0314205d922dba91c452bb1e7fe61456d Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Mon, 18 Dec 2017 11:33:19 -0800 Subject: [PATCH] scorch mergeplan explicitly weeds out empty segments Rather than waiting on scoring to weed out empty segments, this commit does the weeding out of empty segments explicitly and up front. --- index/scorch/mergeplan/merge_plan.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/index/scorch/mergeplan/merge_plan.go b/index/scorch/mergeplan/merge_plan.go index 41ccae0c..0afc3ce5 100644 --- a/index/scorch/mergeplan/merge_plan.go +++ b/index/scorch/mergeplan/merge_plan.go @@ -173,6 +173,17 @@ func plan(segmentsIn []Segment, o *MergePlanOptions) (*MergePlan, error) { rv := &MergePlan{} + var empties []Segment + for _, eligible := range eligibles { + if eligible.LiveSize() <= 0 { + empties = append(empties, eligible) + } + } + if len(empties) > 0 { + rv.Tasks = append(rv.Tasks, &MergeTask{Segments: empties}) + eligibles = removeSegments(eligibles, empties) + } + // While we’re over budget, keep looping, which might produce // another MergeTask. for len(eligibles) > budgetNumSegments {