diff --git a/lib/mergeset/table.go b/lib/mergeset/table.go index e6cb48a3ea..a184066e23 100644 --- a/lib/mergeset/table.go +++ b/lib/mergeset/table.go @@ -1072,7 +1072,6 @@ func (tb *Table) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFinal // Nothing to merge. return errNothingToMerge } - defer tb.releasePartsToMerge(pws) startTime := time.Now() @@ -1132,6 +1131,7 @@ func (tb *Table) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFinal putBlockStreamWriter(bsw) closeBlockStreamReaders() if err != nil { + tb.releasePartsToMerge(pws) return err } if mpNew != nil { diff --git a/lib/storage/partition.go b/lib/storage/partition.go index f45715b8ab..13cbe46905 100644 --- a/lib/storage/partition.go +++ b/lib/storage/partition.go @@ -1250,7 +1250,6 @@ func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFi // Nothing to merge. return errNothingToMerge } - defer pt.releasePartsToMerge(pws) startTime := time.Now() @@ -1311,6 +1310,7 @@ func (pt *partition) mergeParts(pws []*partWrapper, stopCh <-chan struct{}, isFi putBlockStreamWriter(bsw) closeBlockStreamReaders() if err != nil { + pt.releasePartsToMerge(pws) return err } if mpNew != nil {