From 41f5fe1dc93fb33b2bca98590a3227bde4fd6949 Mon Sep 17 00:00:00 2001
From: Polina Bungina <27892524+hughcapet@users.noreply.github.com>
Date: Tue, 15 Oct 2024 14:05:39 +0200
Subject: [PATCH] More major upgrade prechecks (#2775)

Skip when
- it is a standby clusters
- there is no master in the cluster
---
 pkg/cluster/majorversionupgrade.go | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/pkg/cluster/majorversionupgrade.go b/pkg/cluster/majorversionupgrade.go
index e8876dc4..ad431acc 100644
--- a/pkg/cluster/majorversionupgrade.go
+++ b/pkg/cluster/majorversionupgrade.go
@@ -145,6 +145,11 @@ func (c *Cluster) majorVersionUpgrade() error {
 	for i, pod := range pods {
 		ps, _ := c.patroni.GetMemberData(&pod)
 
+		if ps.Role == "standby_leader" {
+			c.logger.Errorf("skipping major version upgrade for %s/%s standby cluster. Re-deploy standby cluster with the required Postgres version specified", c.Namespace, c.Name)
+			return nil
+		}
+
 		if ps.State != "running" {
 			allRunning = false
 			c.logger.Infof("identified non running pod, potentially skipping major version upgrade")
@@ -156,6 +161,11 @@ func (c *Cluster) majorVersionUpgrade() error {
 		}
 	}
 
+	if masterPod == nil {
+		c.logger.Infof("no master in the cluster, skipping major version upgrade")
+		return nil
+	}
+
 	// Recheck version with newest data from Patroni
 	if c.currentMajorVersion >= desiredVersion {
 		if _, exists := c.ObjectMeta.Annotations[majorVersionUpgradeFailureAnnotation]; exists { // if failure annotation exists, remove it
-- 
GitLab