Fix infinite recursion in in replicatefrom tags (#3072)

Besides that:
1. fix problem with is_physical_slot() methods, it was returning false positives for logical slots.
2. Fix a little issue with replicatefrom docs.

Close https://github.com/zalando/patroni/issues/3068
This commit is contained in:
Alexander Kukushkin
2024-06-12 10:26:18 +02:00
committed by GitHub
parent 1b7b8e60fb
commit b6c5a12017
3 changed files with 47 additions and 8 deletions
+26
View File
@@ -186,6 +186,32 @@ class TestSlotsHandler(BaseTestPostgresql):
cluster.get_slot_name_on_primary(self.p.name, stream_node),
'test_4')
def test_get_slot_name_on_primary(self):
node1 = Member(0, 'node1', 28, {
'state': 'running', 'conn_url': 'postgres://replicator:[email protected]:5436/postgres',
'tags': {'replicatefrom': 'node2'}
})
node2 = Member(0, 'node2', 28, {
'state': 'running', 'conn_url': 'postgres://replicator:[email protected]:5436/postgres',
'tags': {'replicatefrom': 'node1'}
})
cluster = Cluster(True, None, self.leader, Status.empty(), [self.leadermem, node1, node2],
None, SyncState.empty(), None, None)
self.assertIsNone(cluster.get_slot_name_on_primary('node1', node1))
def test_should_enforce_hot_standby_feedback(self):
node1 = Member(0, 'postgresql0', 28, {
'state': 'running', 'conn_url': 'postgres://replicator:[email protected]:5436/postgres',
'tags': {'replicatefrom': 'postgresql1'}
})
node2 = Member(0, 'postgresql1', 28, {
'state': 'running', 'conn_url': 'postgres://replicator:[email protected]:5436/postgres',
'tags': {'replicatefrom': 'postgresql0'}
})
cluster = Cluster(True, None, self.leader, Status.empty(), [self.leadermem, node1, node2],
None, SyncState.empty(), None, None)
self.assertFalse(cluster.should_enforce_hot_standby_feedback(self.p, node1))
@patch.object(Postgresql, 'is_primary', Mock(return_value=False))
def test__ensure_logical_slots_replica(self):
self.p.set_role('replica')