From 21145d18d12a8675bbdef877eb5865a0c06518f8 Mon Sep 17 00:00:00 2001 From: Alexander Kukushkin Date: Fri, 17 Sep 2021 13:46:46 +0200 Subject: [PATCH] Delay the next attempt of recovery till next HA loop (#2054) If Postgres crashed due to out of disk space (for example) and fails to start because of that Patroni is too eagerly trying to recover it and producing too many logs --- patroni/postgresql/__init__.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/patroni/postgresql/__init__.py b/patroni/postgresql/__init__.py index f1ce1ecb..6cfd42c3 100644 --- a/patroni/postgresql/__init__.py +++ b/patroni/postgresql/__init__.py @@ -861,20 +861,22 @@ class Postgresql(object): if change_role: self.__cb_pending = ACTION_NOOP + ret = True if self.is_running(): if do_reload: self.config.write_postgresql_conf() - if self.reload(block_callbacks=change_role) and change_role: + ret = self.reload(block_callbacks=change_role) + if ret and change_role: self.set_role(role) else: - self.restart(block_callbacks=change_role, role=role) + ret = self.restart(block_callbacks=change_role, role=role) else: - self.start(timeout=timeout, block_callbacks=change_role, role=role) + ret = self.start(timeout=timeout, block_callbacks=change_role, role=role) or None if change_role: # TODO: postpone this until start completes, or maybe do even earlier self.call_nowait(ACTION_ON_ROLE_CHANGE) - return True + return ret def _wait_promote(self, wait_seconds): for _ in polling_loop(wait_seconds):