mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-19 11:30:19 +02:00
* fix: no switchover candidate found with member state "streaming" (#1992) * Add test * Also handle "in archive recovery" state
This commit is contained in:
+7
-1
@@ -7,6 +7,8 @@ import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"golang.org/x/exp/slices"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -503,7 +505,11 @@ func (c *Cluster) getSwitchoverCandidate(master *v1.Pod) (spec.NamespacedName, e
|
||||
} else {
|
||||
// in asynchronous mode find running replicas
|
||||
for _, member := range members {
|
||||
if PostgresRole(member.Role) != Leader && PostgresRole(member.Role) != StandbyLeader && member.State == "running" {
|
||||
if PostgresRole(member.Role) == Leader || PostgresRole(member.Role) == StandbyLeader {
|
||||
continue
|
||||
}
|
||||
|
||||
if slices.Contains([]string{"running", "streaming", "in archive recovery"}, member.State) {
|
||||
candidates = append(candidates, member)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user