From c50f072b314b1066c93519a241f6c8b8c917f8aa Mon Sep 17 00:00:00 2001 From: Murat Kabilov Date: Tue, 23 Aug 2016 11:38:30 +0200 Subject: [PATCH] Avoid stopping pg instance when in paused state --- patroni/__init__.py | 5 ++++- patroni/ha.py | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/patroni/__init__.py b/patroni/__init__.py index 37a8e848..ad968a08 100644 --- a/patroni/__init__.py +++ b/patroni/__init__.py @@ -128,5 +128,8 @@ def main(): pass finally: patroni.api.shutdown() - patroni.postgresql.stop(checkpoint=False) + if patroni.ha.is_paused(): + logger.info('Postgres is not stopped due paused state') + else: + patroni.postgresql.stop(checkpoint=False) patroni.dcs.delete_leader() diff --git a/patroni/ha.py b/patroni/ha.py index 0f0ef24d..28f7b696 100644 --- a/patroni/ha.py +++ b/patroni/ha.py @@ -26,6 +26,9 @@ class Ha(object): self.recovering = False self._async_executor = AsyncExecutor() + def is_paused(self): + return self.cluster.config and 'pause' in self.cluster.config.data and self.cluster.config.data['pause'] + def load_cluster_from_dcs(self): cluster = self.dcs.get_cluster() @@ -150,8 +153,6 @@ class Ha(object): if self.state_handler.is_leader() or self.state_handler.role == 'master': return message else: - if self.cluster.config and 'pause' in self.cluster.config.data and self.cluster.config.data['pause']: - return "Not promoted due to paused state." self.state_handler.promote() self.touch_member() return promote_message