From 041015037e1e08eb7cd5df27d276da946335f86a Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Fri, 18 May 2018 16:32:06 +0200 Subject: [PATCH] Sync replication slots when we noticed a new postmaster process (#677) Fixes: https://github.com/zalando/patroni/issues/674 --- patroni/postgresql.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/patroni/postgresql.py b/patroni/postgresql.py index f215283a..7a9034aa 100644 --- a/patroni/postgresql.py +++ b/patroni/postgresql.py @@ -741,12 +741,15 @@ class Postgresql(object): def is_running(self): """Returns PostmasterProcess if one is running on the data directory or None. If most recently seen process - is running udpates the cached process based on pid file.""" + is running updates the cached process based on pid file.""" if self._postmaster_proc: if self._postmaster_proc.is_running(): return self._postmaster_proc self._postmaster_proc = None + # we noticed that postgres was restarted, force syncing of replication + self._schedule_load_slots = self.use_slots + self._postmaster_proc = PostmasterProcess.from_pidfile(self._data_dir) return self._postmaster_proc @@ -987,7 +990,7 @@ class Postgresql(object): Should only be called when state == 'starting' - :returns: True iff state was changed from 'starting' + :returns: True if state was changed from 'starting' """ ready = self.pg_isready()