From 25060beef0c536e80b53507ec445695a7305db00 Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Tue, 14 Sep 2021 09:53:53 +0800 Subject: [PATCH] Fix workqueue memory leak --- staging/src/k8s.io/client-go/util/workqueue/queue.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/client-go/util/workqueue/queue.go b/staging/src/k8s.io/client-go/util/workqueue/queue.go index d563ae4e9b72..b7cd586c1ae7 100644 --- a/staging/src/k8s.io/client-go/util/workqueue/queue.go +++ b/staging/src/k8s.io/client-go/util/workqueue/queue.go @@ -161,7 +161,10 @@ func (q *Type) Get() (item interface{}, shutdown bool) { return nil, true } - item, q.queue = q.queue[0], q.queue[1:] + item = q.queue[0] + // The underlying array still exists and reference this object, so the object will not be garbage collected. + q.queue[0] = nil + q.queue = q.queue[1:] q.metrics.get(item)