diff --git a/patroni/ha.py b/patroni/ha.py index 02025fec..ceecb388 100644 --- a/patroni/ha.py +++ b/patroni/ha.py @@ -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): diff --git a/tests/test_ha.py b/tests/test_ha.py index b054cfc2..1840c901 100644 --- a/tests/test_ha.py +++ b/tests/test_ha.py @@ -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())