Reset rewind state if postgres started after successful pg_rewind (#1408)

Close https://github.com/zalando/patroni/issues/1406
This commit is contained in:
Alexander Kukushkin
2020-02-27 12:24:17 +01:00
committed by GitHub
parent 4a29caa9d3
commit 613634c26b
2 changed files with 6 additions and 0 deletions
+2
View File
@@ -1149,6 +1149,8 @@ class Ha(object):
return 'removed leader key after trying and failing to start postgres'
return 'failed to start postgres'
self._crash_recovery_executed = False
if self._rewind.executed and not self._rewind.failed:
self._rewind.reset_state()
return None
def cancel_initialization(self):
+4
View File
@@ -618,6 +618,8 @@ class TestHa(PostgresInit):
member = Member(0, 'test', 1, {'api_url': 'http://localhost:8011/patroni'})
self.ha.fetch_node_status(member)
@patch.object(Rewind, 'pg_rewind', true)
@patch.object(Rewind, 'check_leader_is_not_in_recovery', true)
def test_post_recover(self):
self.p.is_running = false
self.ha.has_lock = true
@@ -625,6 +627,8 @@ class TestHa(PostgresInit):
self.assertEqual(self.ha.post_recover(), 'removed leader key after trying and failing to start postgres')
self.ha.has_lock = false
self.assertEqual(self.ha.post_recover(), 'failed to start postgres')
leader = Leader(0, 0, Member(0, 'l', 2, {"version": "1.6", "conn_url": "postgres://a", "role": "master"}))
self.ha._rewind.execute(leader)
self.p.is_running = true
self.assertIsNone(self.ha.post_recover())