diff --git a/patroni/postgresql.py b/patroni/postgresql.py index 97d91832..1da93eec 100644 --- a/patroni/postgresql.py +++ b/patroni/postgresql.py @@ -729,14 +729,13 @@ class Postgresql(object): return True change_role = self.role == 'master' - self._need_rewind = self._need_rewind or change_role and self.can_rewind + + self._need_rewind = (not leader or leader.name != self.name) \ + and (self._need_rewind or change_role and self.can_rewind) if self._need_rewind: logger.info("set the rewind flag after demote") - if leader and leader.name == self.name: - return logger.info('Can not rewind from myself') - if self.is_running(): stopped = self.stop() self.set_role('unknown') diff --git a/tests/test_postgresql.py b/tests/test_postgresql.py index dde9647c..81f31105 100644 --- a/tests/test_postgresql.py +++ b/tests/test_postgresql.py @@ -262,8 +262,6 @@ class TestPostgresql(unittest.TestCase): self.p.follow(None, None) # restart without rewind self.p.set_role('master') - self.p.follow(self.leader, self.me) # Can not rewind from myself - with patch.object(Postgresql, 'stop', Mock(return_value=False)): self.p.follow(self.leader, self.leader) # failed to stop postgres