code: func (mc *MergeControl) mergeFinish(merge *OneMerge) {
  	// forceMerge, addIndexes or abortAllmerges may be waiting on
  	// merges to finish
  	// notifyAll()
  
  	// It's possible we are called twice, eg if there was an error
  	// inside mergeInit()
  	if merge.registerDone {
  		for _, info := range merge.segments {
  			delete(mc.mergingSegments, info)
  		}
  		merge.registerDone = false
  	}
  
  	delete(mc.runningMerges, merge)
  	if len(mc.runningMerges) == 0 {
  		mc.mergeSignal.Signal()
  	}
  }
docs: // L3696
  /*
  Does finishing for a merge, which is fast but holds the synchronized
  lock on MergeControl instance.
  
  Note: it must be externally synchronized or used internally.
  */