From 1eca53ad40b41914b894de719d9c5a5d9781feba Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Wed, 16 Aug 2017 18:29:44 +0200 Subject: [PATCH] Exit maintenanced on database crash --- src/backend/distributed/utils/maintenanced.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/backend/distributed/utils/maintenanced.c b/src/backend/distributed/utils/maintenanced.c index fe33c7a26..4b943c18c 100644 --- a/src/backend/distributed/utils/maintenanced.c +++ b/src/backend/distributed/utils/maintenanced.c @@ -212,8 +212,13 @@ CitusMaintenanceDaemonMain(Datum main_arg) HASH_FIND, NULL); if (!myDbData) { - /* should never happen */ - ereport(ERROR, (errmsg("got lost finding myself"))); + /* + * When the database crashes, background workers are restarted, but + * the state in shared memory is lost. In that case, we exit and + * wait for a session to call InitializeMaintenanceDaemonBackend + * to properly add it to the hash. + */ + proc_exit(0); } LWLockRelease(&MaintenanceDaemonControl->lock);