diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 76963d060..658f9fbce 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -1033,11 +1033,12 @@ func (c *Cluster) processPodEvent(obj interface{}) error { } c.podSubscribersMu.RLock() + defer c.podSubscribersMu.RUnlock() + subscriber, ok := c.podSubscribers[spec.NamespacedName(event.PodName)] if ok { subscriber <- event } - c.podSubscribersMu.RUnlock() return nil } diff --git a/pkg/cluster/pod.go b/pkg/cluster/pod.go index a7d4d68aa..156d5dce6 100644 --- a/pkg/cluster/pod.go +++ b/pkg/cluster/pod.go @@ -149,13 +149,14 @@ func (c *Cluster) deletePod(podName spec.NamespacedName) error { func (c *Cluster) unregisterPodSubscriber(podName spec.NamespacedName) { c.logger.Debugf("unsubscribing from pod %q events", podName) c.podSubscribersMu.Lock() + defer c.podSubscribersMu.Unlock() + ch, ok := c.podSubscribers[podName] if !ok { panic("subscriber for pod '" + podName.String() + "' is not found") } delete(c.podSubscribers, podName) - c.podSubscribersMu.Unlock() close(ch) }