From edd5d0a13d7c15bf6a6ef3eb470d958866c0b2f8 Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Thu, 5 May 2022 17:31:39 +0200 Subject: [PATCH] defer unlocking podSubscriber for Switchover --- pkg/cluster/cluster.go | 3 ++- pkg/cluster/pod.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) 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) }