From c73f9448464b64c4eb0993206311f131cf3afec2 Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Mon, 20 Apr 2020 15:42:05 +0200 Subject: [PATCH] double check before recreate --- pkg/cluster/pod.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/cluster/pod.go b/pkg/cluster/pod.go index a734e4835..cb7733c1b 100644 --- a/pkg/cluster/pod.go +++ b/pkg/cluster/pod.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "math/rand" + "reflect" appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" @@ -339,14 +340,20 @@ func (c *Cluster) recreatePods() error { ) replicas := make([]spec.NamespacedName, 0) for i, pod := range pods.Items { + podName := util.NameFromMeta(pods.Items[i].ObjectMeta) role := PostgresRole(pod.Labels[c.OpConfig.PodRoleLabel]) + // final check if spec of running pod differs from template + if reflect.DeepEqual(pod.Spec, c.Statefulset.Spec.Template.Spec) { + c.logger.Infof("%q pod %q already updated", role, podName) + continue + } + if role == Master { masterPod = &pods.Items[i] continue } - podName := util.NameFromMeta(pods.Items[i].ObjectMeta) if newPod, err = c.recreatePod(podName); err != nil { return fmt.Errorf("could not recreate replica pod %q: %v", util.NameFromMeta(pod.ObjectMeta), err) }