From 3ff11065263f7679556df54377b50d928fbe2c9f Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Mon, 13 Jun 2016 14:11:35 +0200 Subject: [PATCH] Reset restart_pending flag when parameter was set to the old value but restart didn't happened. And small bugfix: node can't rewind from themself. --- patroni/postgresql.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/patroni/postgresql.py b/patroni/postgresql.py index 50d57c3a..aa3adf0c 100644 --- a/patroni/postgresql.py +++ b/patroni/postgresql.py @@ -154,7 +154,7 @@ class Postgresql(object): def reload_config(self, config): server_parameters = self.get_server_parameters(config) - listen_address_changed = pending_reload = False + listen_address_changed = pending_reload = pending_restart = False if self.is_healthy(): changes = {p: v for p, v in server_parameters.items() if '.' not in p} changes.update({p: None for p, v in self._server_parameters.items() if not ('.' in p or p in changes)}) @@ -177,7 +177,7 @@ class Postgresql(object): new_value = changes.pop(r[0]) if new_value is None or not compare_values(r[3], unit, r[1], new_value): if r[4] == 'postmaster': - self._pending_restart = True + pending_restart = True if r[0] in ('listen_addresses', 'port'): listen_address_changed = True else: @@ -200,6 +200,7 @@ class Postgresql(object): break self.config = config + self._pending_restart = pending_restart self._server_parameters = server_parameters self._connect_address = config.get('connect_address') @@ -718,7 +719,7 @@ class Postgresql(object): need_rewind = change_role and self.can_rewind if need_rewind: logger.info("set the rewind flag after demote") - if leader and need_rewind: # we have a leader and need to rewind + if leader and leader.name != self.name and need_rewind: # we have a leader and need to rewind if self.is_running(): self.stop() # at present, pg_rewind only runs when the cluster is shut down cleanly