diff --git a/patroni/api.py b/patroni/api.py index 5da815d5..52d0d21a 100644 --- a/patroni/api.py +++ b/patroni/api.py @@ -476,6 +476,12 @@ class RestApiHandler(BaseHTTPRequestHandler): * ``patroni_dcs_last_seen``: epoch timestamp when DCS was last contacted successfully; * ``patroni_pending_restart``: ``1`` if this PostgreSQL node is pending a restart, else ``0``; * ``patroni_is_paused``: ``1`` if Patroni is in maintenance node, else ``0``. + + For PostgreSQL v9.6+ the response will also have the following: + + * ``patroni_postgres_streaming``: 1 if Postgres is streaming from another node, else ``0``; + * ``patroni_postgres_in_archive_recovery``: ``1`` if Postgres isn't streaming and + there is ``restore_command`` available, else ``0``. """ postgres = self.get_postgresql_status(True) patroni = self.server.patroni diff --git a/patroni/ha.py b/patroni/ha.py index d7afc086..3482121d 100644 --- a/patroni/ha.py +++ b/patroni/ha.py @@ -477,7 +477,8 @@ class Ha(object): # timeout > 0 indicates that we still have the leader lock, and it was just updated if timeout\ - and data.get('Database cluster state') in ('in production', 'shutting down', 'shut down')\ + and data.get('Database cluster state') in ('in production', 'in crash recovery', + 'shutting down', 'shut down')\ and self.state_handler.state == 'crashed'\ and self.state_handler.role in ('primary', 'master')\ and not self.state_handler.config.recovery_conf_exists():