Fix bug in divergence timeline check (#2221)

Patroni was falsely assuming that timelines have diverged.
For pg_rewind it didn't create any problem, but if pg_rewind is not allowed and the `remove_data_directory_on_diverged_timelines` is set, it resulted in reinitializing the former leader.

Close https://github.com/zalando/patroni/issues/2220
This commit is contained in:
Alexander Kukushkin
2022-02-17 15:53:13 +01:00
committed by GitHub
parent 075918d447
commit aa91557a80
2 changed files with 5 additions and 1 deletions
+4 -1
View File
@@ -141,7 +141,10 @@ class TestRewind(BaseTestPostgresql):
self.leader = self.leader.member
self.assertFalse(self.r.rewind_or_reinitialize_needed_and_possible(self.leader))
mock_check_leader_is_not_in_recovery.return_value = True
self.assertTrue(self.r.rewind_or_reinitialize_needed_and_possible(self.leader))
self.assertFalse(self.r.rewind_or_reinitialize_needed_and_possible(self.leader))
self.r.trigger_check_diverged_lsn()
with patch.object(MockCursor, 'fetchone', Mock(side_effect=[('', 3, '0/0'), ('', b'4\t0/40159C0\tn\n')])):
self.assertTrue(self.r.rewind_or_reinitialize_needed_and_possible(self.leader))
self.r.reset_state()
self.r.trigger_check_diverged_lsn()
with patch('patroni.psycopg.connect', Mock(side_effect=Exception)):