From 324f5d1df705f6c1edefc65c7cfdbe3586eb50f8 Mon Sep 17 00:00:00 2001 From: sunby Date: Tue, 15 Jun 2021 18:25:55 +0800 Subject: [PATCH] Fix memory leak in indexservice (#5779) Signed-off-by: sunby --- internal/indexservice/meta_table.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/indexservice/meta_table.go b/internal/indexservice/meta_table.go index 61ca74f46a..a41d6753fc 100644 --- a/internal/indexservice/meta_table.go +++ b/internal/indexservice/meta_table.go @@ -474,12 +474,19 @@ func (nt *nodeTasks) finishTask(indexBuildID UniqueID) { nt.lock.Lock() defer nt.lock.Unlock() - for serverID := range nt.nodeID2Tasks { - for i, buildID := range nt.nodeID2Tasks[serverID] { - if buildID == indexBuildID { - nt.nodeID2Tasks[serverID] = append(nt.nodeID2Tasks[serverID][:i], nt.nodeID2Tasks[serverID][:i+1]...) + removed := false + for serverID, taskIDs := range nt.nodeID2Tasks { + for i := 0; i < len(taskIDs); i++ { + if indexBuildID == taskIDs[i] { + taskIDs = append(taskIDs[:i], taskIDs[i+1:]...) + removed = true + break } } + if removed { + nt.nodeID2Tasks[serverID] = taskIDs + break + } } }