From 9de46e07e983b7c66bd2d679ebb4e4de68460b4b Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Tue, 17 May 2022 18:33:12 +0200 Subject: [PATCH] resolve rebase conflict --- pkg/cluster/cluster.go | 7 ++++--- pkg/cluster/pod.go | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index f80cf6942..62699a4ba 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -1037,13 +1037,15 @@ func (c *Cluster) processPodEvent(obj interface{}) error { return fmt.Errorf("could not cast to PodEvent") } + podName := spec.NamespacedName(event.PodName) + // can only take lock when (un)registerPodSubscriber is finshed c.podSubscribersMu.RLock() - subscriber, ok := c.podSubscribers[spec.NamespacedName(event.PodName)] + subscriber, ok := c.podSubscribers[podName] if ok { select { case <-subscriber.stopEvent: - c.logger.Debugf("ignoring pod event %s for pod %q", event.EventType, event.PodName) + c.unregisterPodSubscriber(podName) default: subscriber.podEvents <- event } @@ -1516,7 +1518,6 @@ func (c *Cluster) Switchover(curMaster *v1.Pod, candidate spec.NamespacedName) e c.eventRecorder.Eventf(c.GetReference(), v1.EventTypeNormal, "Switchover", "Switching over from %q to %q", curMaster.Name, candidate) stopCh := make(chan struct{}) ch := c.registerPodSubscriber(candidate) - defer c.unregisterPodSubscriber(candidate) defer close(stopCh) if err = c.patroni.Switchover(curMaster, candidate.Name); err == nil { diff --git a/pkg/cluster/pod.go b/pkg/cluster/pod.go index c4752cc85..142e0e7df 100644 --- a/pkg/cluster/pod.go +++ b/pkg/cluster/pod.go @@ -137,7 +137,6 @@ func (c *Cluster) deletePods() error { func (c *Cluster) deletePod(podName spec.NamespacedName) error { c.setProcessName("deleting pod %q", podName) subscriber := c.registerPodSubscriber(podName) - defer c.unregisterPodSubscriber(podName) if err := c.KubeClient.Pods(podName.Namespace).Delete(context.TODO(), podName.Name, c.deleteOptions); err != nil { return err @@ -406,7 +405,6 @@ func (c *Cluster) getPatroniMemberData(pod *v1.Pod) (patroni.MemberData, error) func (c *Cluster) recreatePod(podName spec.NamespacedName) (*v1.Pod, error) { stopCh := make(chan struct{}) subscriber := c.registerPodSubscriber(podName) - defer c.unregisterPodSubscriber(podName) defer close(stopCh) err := retryutil.Retry(1*time.Second, 5*time.Second,