From f082ecf60b1cd62249782cc94d532450de87b7d1 Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Thu, 1 Sep 2016 11:29:45 +0200 Subject: [PATCH] Set _need_rewind to True if the node was previously known as a master --- patroni/ha.py | 1 + patroni/postgresql.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/patroni/ha.py b/patroni/ha.py index d974951b..7a31c1fe 100644 --- a/patroni/ha.py +++ b/patroni/ha.py @@ -400,6 +400,7 @@ class Ha(object): 'following new leader after trying and failing to obtain lock') else: # when we are doing manual failover there is no guaranty that new leader is ahead of any other node + # node tagged as nofailover can be ahead of the new leader either, but it is always excluded from elections need_rewind = bool(self.cluster.failover) or self.patroni.nofailover if need_rewind: sleep(2) # Give a time to somebody to take the leader lock diff --git a/patroni/postgresql.py b/patroni/postgresql.py index ce8b6183..b023faf2 100644 --- a/patroni/postgresql.py +++ b/patroni/postgresql.py @@ -774,6 +774,8 @@ class Postgresql(object): self._need_rewind = False if self.is_running(): return + elif change_role: + self._need_rewind = True self._need_rewind &= bool(leader and leader.conn_url) and self.can_rewind