Skip to content

Commit 562dd7b

Browse files
authored
Merge pull request #283 from kubescape/panic
catch error on event casting in cooldownqueue
2 parents 92e2079 + 6dc8481 commit 562dd7b

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

watcher/cooldownqueue.go

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package watcher
22

33
import (
4+
"errors"
45
"strings"
56
"sync"
67
"time"
@@ -52,10 +53,13 @@ func NewCooldownQueueWithParams(expiration, interval time.Duration) *CooldownQue
5253
}
5354

5455
// makeEventKey creates a unique key for an event from a watcher
55-
func makeEventKey(e watch.Event) string {
56+
func makeEventKey(e watch.Event) (string, error) {
5657
gvk := e.Object.GetObjectKind().GroupVersionKind()
57-
meta := e.Object.(metav1.Object)
58-
return strings.Join([]string{gvk.Group, gvk.Version, gvk.Kind, meta.GetNamespace(), meta.GetName()}, "/")
58+
meta, ok := e.Object.(metav1.Object)
59+
if !ok {
60+
return "", errors.New("object does not implement metav1.Object")
61+
}
62+
return strings.Join([]string{gvk.Group, gvk.Version, gvk.Kind, meta.GetNamespace(), meta.GetName()}, "/"), nil
5963
}
6064

6165
func (q *CooldownQueue) Closed() bool {
@@ -71,7 +75,10 @@ func (q *CooldownQueue) Enqueue(e watch.Event) {
7175
if q.closed {
7276
return
7377
}
74-
eventKey := makeEventKey(e)
78+
eventKey, err := makeEventKey(e)
79+
if err != nil {
80+
return
81+
}
7582
q.seenEvents.Set(eventKey, e)
7683
}
7784

watcher/cooldownqueue_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ func Test_makeEventKey(t *testing.T) {
9191
}
9292
for _, tt := range tests {
9393
t.Run(tt.name, func(t *testing.T) {
94-
got := makeEventKey(tt.e)
94+
got, err := makeEventKey(tt.e)
95+
assert.NoError(t, err)
9596
assert.Equal(t, tt.want, got)
9697
})
9798
}

0 commit comments

Comments
 (0)