diff --git a/patroni/postgresql.py b/patroni/postgresql.py index f28780b05..a5b1e16cc 100644 --- a/patroni/postgresql.py +++ b/patroni/postgresql.py @@ -79,7 +79,7 @@ def __init__(self, config): self._state = 'stopped' self._state_lock = Lock() - self._role = 'replica' if os.path.exists(self.recovery_conf) else 'master' + self._role = self.get_postgres_role_from_data_directory() self._role_lock = Lock() if self.is_running(): @@ -124,6 +124,9 @@ def get_local_address(self): break return local_address + ':' + self.port + def get_postgres_role_from_data_directory(self): + return 'replica' if os.path.exists(self.recovery_conf) else 'master' + @property def _connect_kwargs(self): r = parseurl('postgres://{0}/postgres'.format(self.local_address)) @@ -347,7 +350,7 @@ def start(self, block_callbacks=False): logger.error('Cannot start PostgreSQL because one is already running.') return True - self.set_role('replica' if os.path.exists(self.recovery_conf) else 'master') + self.set_role(self.get_postgres_role_from_data_directory()) if os.path.exists(self.postmaster_pid): os.remove(self.postmaster_pid) logger.info('Removed %s', self.postmaster_pid)