Start primary back when it crashed with "in crash recovery" state (#2763)

If one of backends crashed postmaster stops all backend and does crash recovery because shared memory could be corrupted. If something happens during this phase postgres may completely crash leaving pg_control with "in crash recovery" state.

Followup on #2726
This commit is contained in:
Alexander Kukushkin
2023-07-20 13:23:55 +02:00
committed by GitHub
parent 0c5bf3c4cd
commit 4830e36e2b
+2 -1
View File
@@ -473,7 +473,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():