1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2024-12-14 11:57:48 +00:00

Fix memory leak - remove item from the cache once done (audit handler) (#1459)

* remove entry from audit handler

* fix test
This commit is contained in:
shuting 2021-01-07 16:26:59 -08:00 committed by GitHub
parent ff246a81a1
commit e7a04b9138
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 3 deletions

View file

@ -15,7 +15,7 @@ func TestExpandInMetadata(t *testing.T) {
testExpand(t, map[string]string{"=(test/*)": "test"}, map[string]string{"test/test": "test"},
map[string]interface{}{"=(test/test)": "test"})
testExpand(t, map[string]string{"test/*": "*"}, map[string]string{"test/test1": "test1", "test/test2": "test2"},
testExpand(t, map[string]string{"test/*": "*"}, map[string]string{"test/test1": "test1"},
map[string]interface{}{"test/test1": "*"})
}

View file

@ -1,6 +1,7 @@
package webhooks
import (
"strings"
"time"
"github.com/go-logr/logr"
@ -129,7 +130,7 @@ func (h *auditHandler) processNextWorkItem() bool {
}
err := h.process(request)
h.handleErr(err)
h.handleErr(err, obj, request)
return true
}
@ -176,6 +177,20 @@ func (h *auditHandler) process(request *v1beta1.AdmissionRequest) error {
return nil
}
func (h *auditHandler) handleErr(err error) {
func (h *auditHandler) handleErr(err error, key interface{}, request *v1beta1.AdmissionRequest) {
logger := h.log.WithName("handleErr")
if err == nil {
h.queue.Forget(key)
return
}
k := strings.Join([]string{request.Kind.Kind, request.Namespace, request.Name}, "/")
if h.queue.NumRequeues(key) < workQueueRetryLimit {
logger.V(3).Info("retrying processing admission request", "key", k, "error", err.Error())
h.queue.AddRateLimited(key)
return
}
logger.Error(err, "failed to process admission request", "key", k)
h.queue.Forget(key)
}