From a8046eee000db3c909db03303f8e24f1dbb4da45 Mon Sep 17 00:00:00 2001 From: hzhhong Date: Fri, 11 Nov 2022 10:50:35 +0800 Subject: [PATCH] Fix:Goroutine leaks when getting audit event sender times out (#5342) * Fix:Goroutine leaks when getting audit event sender times out * make it more readable --- 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 07683fcb2..ab148eb02 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{}{}: } @@ -183,7 +185,9 @@ func (b *Backend) sendEvents(events *v1alpha1.EventList) { go send() defer func() { - <-b.senderCh + if !skipReturnSender { + <-b.senderCh + } }() select {