From 839a31ac1dd7b5a4c081858fe18fac7fe15515a6 Mon Sep 17 00:00:00 2001 From: KubeSphere CI Bot <47586280+ks-ci-bot@users.noreply.github.com> Date: Fri, 13 Jan 2023 11:14:33 +0800 Subject: [PATCH] [release-3.3] Fix:Goroutine leaks when getting audit event sender times out (#5475) * Fix:Goroutine leaks when getting audit event sender times out * make it more readable Co-authored-by: hzhhong --- pkg/apiserver/auditing/backend.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/apiserver/auditing/backend.go b/pkg/apiserver/auditing/backend.go index 78f53826f..623dc94ef 100644 --- a/pkg/apiserver/auditing/backend.go +++ b/pkg/apiserver/auditing/backend.go @@ -141,6 +141,7 @@ func (b *Backend) sendEvents(events *v1alpha1.EventList) { defer cancel() stopCh := make(chan struct{}) + skipReturnSender := false send := func() { ctx, cancel := context.WithTimeout(context.Background(), b.getSenderTimeout) @@ -149,6 +150,7 @@ func (b *Backend) sendEvents(events *v1alpha1.EventList) { select { case <-ctx.Done(): klog.Error("Get auditing event sender timeout") + skipReturnSender = true return case b.senderCh <- struct{}{}: } @@ -182,7 +184,9 @@ func (b *Backend) sendEvents(events *v1alpha1.EventList) { go send() defer func() { - <-b.senderCh + if !skipReturnSender { + <-b.senderCh + } }() select {