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