Tweak postmaster code to avoid double reporting when bgwriter crashes.
This commit is contained in:
parent
5cc38649d4
commit
bb892cecf9
@ -37,7 +37,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.418 2004/08/01 17:45:43 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.419 2004/08/04 20:09:47 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
*
|
||||
@ -248,8 +248,8 @@ static void pmdie(SIGNAL_ARGS);
|
||||
static void reaper(SIGNAL_ARGS);
|
||||
static void sigusr1_handler(SIGNAL_ARGS);
|
||||
static void dummy_handler(SIGNAL_ARGS);
|
||||
static void CleanupProc(int pid, int exitstatus);
|
||||
static void HandleChildCrash(int pid, int exitstatus);
|
||||
static void CleanupBackend(int pid, int exitstatus);
|
||||
static void HandleChildCrash(int pid, int exitstatus, const char *procname);
|
||||
static void LogChildExit(int lev, const char *procname,
|
||||
int pid, int exitstatus);
|
||||
static int BackendRun(Port *port);
|
||||
@ -1947,7 +1947,7 @@ reaper(SIGNAL_ARGS)
|
||||
while ((pid = win32_waitpid(&exitstatus)) > 0)
|
||||
{
|
||||
/*
|
||||
* We need to do this here, and not in CleanupProc, since this is
|
||||
* We need to do this here, and not in CleanupBackend, since this is
|
||||
* to be called on all children when we are done with them. Could
|
||||
* move to LogChildExit, but that seems like asking for future
|
||||
* trouble...
|
||||
@ -2025,9 +2025,8 @@ reaper(SIGNAL_ARGS)
|
||||
/*
|
||||
* Any unexpected exit of the bgwriter is treated as a crash.
|
||||
*/
|
||||
LogChildExit(LOG, gettext("background writer process"),
|
||||
pid, exitstatus);
|
||||
HandleChildCrash(pid, exitstatus);
|
||||
HandleChildCrash(pid, exitstatus,
|
||||
gettext("background writer process"));
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -2067,7 +2066,7 @@ reaper(SIGNAL_ARGS)
|
||||
/*
|
||||
* Else do standard backend child cleanup.
|
||||
*/
|
||||
CleanupProc(pid, exitstatus);
|
||||
CleanupBackend(pid, exitstatus);
|
||||
} /* loop over pending child-death reports */
|
||||
|
||||
if (FatalError)
|
||||
@ -2116,13 +2115,13 @@ reaper_done:
|
||||
|
||||
|
||||
/*
|
||||
* CleanupProc -- cleanup after terminated backend.
|
||||
* CleanupBackend -- cleanup after terminated backend.
|
||||
*
|
||||
* Remove all local state associated with backend.
|
||||
*/
|
||||
static void
|
||||
CleanupProc(int pid,
|
||||
int exitstatus) /* child's exit status. */
|
||||
CleanupBackend(int pid,
|
||||
int exitstatus) /* child's exit status. */
|
||||
{
|
||||
Dlelem *curr;
|
||||
|
||||
@ -2136,7 +2135,7 @@ CleanupProc(int pid,
|
||||
*/
|
||||
if (exitstatus != 0)
|
||||
{
|
||||
HandleChildCrash(pid, exitstatus);
|
||||
HandleChildCrash(pid, exitstatus, gettext("server process"));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2166,8 +2165,7 @@ CleanupProc(int pid,
|
||||
* process, and to signal all other remaining children to quickdie.
|
||||
*/
|
||||
static void
|
||||
HandleChildCrash(int pid,
|
||||
int exitstatus) /* child's exit status. */
|
||||
HandleChildCrash(int pid, int exitstatus, const char *procname)
|
||||
{
|
||||
Dlelem *curr,
|
||||
*next;
|
||||
@ -2179,11 +2177,7 @@ HandleChildCrash(int pid,
|
||||
*/
|
||||
if (!FatalError)
|
||||
{
|
||||
LogChildExit(LOG,
|
||||
(pid == BgWriterPID) ?
|
||||
gettext("background writer process") :
|
||||
gettext("server process"),
|
||||
pid, exitstatus);
|
||||
LogChildExit(LOG, procname, pid, exitstatus);
|
||||
ereport(LOG,
|
||||
(errmsg("terminating any other active server processes")));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user