fix: close segment writer on error paths in sort compaction (#48534)

Close BinlogRecordWriter on error paths in sortSegment to prevent
resource leak.

issue: #48533

Signed-off-by: sunby <sunbingyi1992@gmail.com>
This commit is contained in:
Bingyi Sun
2026-04-01 17:25:36 +08:00
committed by GitHub
parent 10c3149c20
commit eebd59854e
@@ -204,6 +204,7 @@ func (t *sortCompactionTask) sortSegment(ctx context.Context) (*datapb.Compactio
storage.WithStorageConfig(t.compactionParams.StorageConfig))
if err != nil {
log.Warn("load deletePKs failed", zap.Error(err))
srw.Close()
return nil, err
}
loadDeltaCost := time.Since(phaseStart)
@@ -262,6 +263,7 @@ func (t *sortCompactionTask) sortSegment(ctx context.Context) (*datapb.Compactio
}
if err != nil {
log.Warn("error creating insert binlog reader", zap.Error(err))
srw.Close()
return nil, err
}
defer rr.Close()
@@ -271,6 +273,7 @@ func (t *sortCompactionTask) sortSegment(ctx context.Context) (*datapb.Compactio
numValidRows, sortTimings, err := storage.Sort(t.compactionParams.BinLogMaxSize, t.plan.GetSchema(), rrs, srw, predicate, t.sortByFieldIDs)
if err != nil {
log.Warn("sort failed", zap.Error(err))
srw.Close()
return nil, err
}
if sortTimings == nil {