Skip to content
Snippets Groups Projects
Commit bb892cec authored by Tom Lane's avatar Tom Lane
Browse files

Tweak postmaster code to avoid double reporting when bgwriter crashes.

parent 5cc38649
No related branches found
No related tags found
No related merge requests found
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
* *
* *
* IDENTIFICATION * 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 * NOTES
* *
...@@ -248,8 +248,8 @@ static void pmdie(SIGNAL_ARGS); ...@@ -248,8 +248,8 @@ static void pmdie(SIGNAL_ARGS);
static void reaper(SIGNAL_ARGS); static void reaper(SIGNAL_ARGS);
static void sigusr1_handler(SIGNAL_ARGS); static void sigusr1_handler(SIGNAL_ARGS);
static void dummy_handler(SIGNAL_ARGS); static void dummy_handler(SIGNAL_ARGS);
static void CleanupProc(int pid, int exitstatus); static void CleanupBackend(int pid, int exitstatus);
static void HandleChildCrash(int pid, int exitstatus); static void HandleChildCrash(int pid, int exitstatus, const char *procname);
static void LogChildExit(int lev, const char *procname, static void LogChildExit(int lev, const char *procname,
int pid, int exitstatus); int pid, int exitstatus);
static int BackendRun(Port *port); static int BackendRun(Port *port);
...@@ -1947,7 +1947,7 @@ reaper(SIGNAL_ARGS) ...@@ -1947,7 +1947,7 @@ reaper(SIGNAL_ARGS)
while ((pid = win32_waitpid(&exitstatus)) > 0) 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 * to be called on all children when we are done with them. Could
* move to LogChildExit, but that seems like asking for future * move to LogChildExit, but that seems like asking for future
* trouble... * trouble...
...@@ -2025,9 +2025,8 @@ reaper(SIGNAL_ARGS) ...@@ -2025,9 +2025,8 @@ reaper(SIGNAL_ARGS)
/* /*
* Any unexpected exit of the bgwriter is treated as a crash. * Any unexpected exit of the bgwriter is treated as a crash.
*/ */
LogChildExit(LOG, gettext("background writer process"), HandleChildCrash(pid, exitstatus,
pid, exitstatus); gettext("background writer process"));
HandleChildCrash(pid, exitstatus);
continue; continue;
} }
...@@ -2067,7 +2066,7 @@ reaper(SIGNAL_ARGS) ...@@ -2067,7 +2066,7 @@ reaper(SIGNAL_ARGS)
/* /*
* Else do standard backend child cleanup. * Else do standard backend child cleanup.
*/ */
CleanupProc(pid, exitstatus); CleanupBackend(pid, exitstatus);
} /* loop over pending child-death reports */ } /* loop over pending child-death reports */
if (FatalError) if (FatalError)
...@@ -2116,13 +2115,13 @@ reaper_done: ...@@ -2116,13 +2115,13 @@ reaper_done:
/* /*
* CleanupProc -- cleanup after terminated backend. * CleanupBackend -- cleanup after terminated backend.
* *
* Remove all local state associated with backend. * Remove all local state associated with backend.
*/ */
static void static void
CleanupProc(int pid, CleanupBackend(int pid,
int exitstatus) /* child's exit status. */ int exitstatus) /* child's exit status. */
{ {
Dlelem *curr; Dlelem *curr;
...@@ -2136,7 +2135,7 @@ CleanupProc(int pid, ...@@ -2136,7 +2135,7 @@ CleanupProc(int pid,
*/ */
if (exitstatus != 0) if (exitstatus != 0)
{ {
HandleChildCrash(pid, exitstatus); HandleChildCrash(pid, exitstatus, gettext("server process"));
return; return;
} }
...@@ -2166,8 +2165,7 @@ CleanupProc(int pid, ...@@ -2166,8 +2165,7 @@ CleanupProc(int pid,
* process, and to signal all other remaining children to quickdie. * process, and to signal all other remaining children to quickdie.
*/ */
static void static void
HandleChildCrash(int pid, HandleChildCrash(int pid, int exitstatus, const char *procname)
int exitstatus) /* child's exit status. */
{ {
Dlelem *curr, Dlelem *curr,
*next; *next;
...@@ -2179,11 +2177,7 @@ HandleChildCrash(int pid, ...@@ -2179,11 +2177,7 @@ HandleChildCrash(int pid,
*/ */
if (!FatalError) if (!FatalError)
{ {
LogChildExit(LOG, LogChildExit(LOG, procname, pid, exitstatus);
(pid == BgWriterPID) ?
gettext("background writer process") :
gettext("server process"),
pid, exitstatus);
ereport(LOG, ereport(LOG,
(errmsg("terminating any other active server processes"))); (errmsg("terminating any other active server processes")));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment