diff --git a/pkg/cluster/majorversionupgrade.go b/pkg/cluster/majorversionupgrade.go index e7f9f4f04cca7ebe878f99faf517306e9c001a2b..b75702bcd2a37cd8a8ec4015a3f7d0fd7baf020c 100644 --- a/pkg/cluster/majorversionupgrade.go +++ b/pkg/cluster/majorversionupgrade.go @@ -129,17 +129,13 @@ func (c *Cluster) majorVersionUpgrade() error { return nil } - if !isInMaintenanceWindow(c.Spec.MaintenanceWindows) { - c.logger.Infof("skipping major version upgrade, not in maintenance window") - return nil - } - pods, err := c.listPods() if err != nil { return err } allRunning := true + isStandbyCluster := false var masterPod *v1.Pod @@ -147,8 +143,9 @@ func (c *Cluster) majorVersionUpgrade() error { 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 + isStandbyCluster = true + c.currentMajorVersion = ps.ServerVersion + break } if ps.State != "running" { @@ -175,6 +172,9 @@ func (c *Cluster) majorVersionUpgrade() error { } c.logger.Infof("recheck cluster version is already up to date. current: %d, min desired: %d", c.currentMajorVersion, desiredVersion) return nil + } else if isStandbyCluster { + c.logger.Warnf("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 _, exists := c.ObjectMeta.Annotations[majorVersionUpgradeFailureAnnotation]; exists { @@ -182,6 +182,11 @@ func (c *Cluster) majorVersionUpgrade() error { return nil } + if !isInMaintenanceWindow(c.Spec.MaintenanceWindows) { + c.logger.Infof("skipping major version upgrade, not in maintenance window") + return nil + } + members, err := c.patroni.GetClusterMembers(masterPod) if err != nil { c.logger.Error("could not get cluster members data from Patroni API, skipping major version upgrade")