1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-28 11:55:03 +03:00

After a crash, don't restart workers with BGW_NEVER_RESTART.

Amit Khandekar
This commit is contained in:
Robert Haas
2015-04-02 14:38:06 -04:00
parent 3ebe6d8956
commit a1f4ade01c

View File

@@ -420,9 +420,9 @@ BackgroundWorkerStopNotifications(pid_t pid)
/*
* Reset background worker crash state.
*
* We assume that, after a crash-and-restart cycle, background workers should
* be restarted immediately, instead of waiting for bgw_restart_time to
* elapse.
* We assume that, after a crash-and-restart cycle, background workers without
* the never-restart flag should be restarted immediately, instead of waiting
* for bgw_restart_time to elapse.
*/
void
ResetBackgroundWorkerCrashTimes(void)
@@ -434,7 +434,14 @@ ResetBackgroundWorkerCrashTimes(void)
RegisteredBgWorker *rw;
rw = slist_container(RegisteredBgWorker, rw_lnode, iter.cur);
rw->rw_crashed_at = 0;
/*
* For workers that should not be restarted, we don't want to lose
* the information that they have crashed; otherwise, they would be
* restarted, which is wrong.
*/
if (rw->rw_worker.bgw_restart_time != BGW_NEVER_RESTART)
rw->rw_crashed_at = 0;
}
}