From eebd59854e6c1b8ffdcafe63fda8e7e92a76feee Mon Sep 17 00:00:00 2001 From: Bingyi Sun Date: Wed, 1 Apr 2026 17:25:36 +0800 Subject: [PATCH] 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 --- internal/datanode/compactor/sort_compaction.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/datanode/compactor/sort_compaction.go b/internal/datanode/compactor/sort_compaction.go index d2763ba35e..5c595ed83e 100644 --- a/internal/datanode/compactor/sort_compaction.go +++ b/internal/datanode/compactor/sort_compaction.go @@ -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 {