fix: no switchover candidate found with member state "streaming" (#1992) (#2515)

* fix: no switchover candidate found with member state "streaming" (#1992)
* Add test
* Also handle "in archive recovery" state
This commit is contained in:
Chris Boot
2024-01-24 10:40:58 +01:00
committed by GitHub
parent 45489d3741
commit 8f3139965c
4 changed files with 37 additions and 24 deletions
+7
View File
@@ -75,6 +75,13 @@ func TestGetSwitchoverCandidate(t *testing.T) {
expectedCandidate: spec.NamespacedName{},
expectedError: fmt.Errorf("no switchover candidate found"),
},
{
subtest: "replicas with streaming state",
clusterJson: `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 2}]}`,
syncModeEnabled: false,
expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-2"},
expectedError: nil,
},
}
for _, tt := range tests {