diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 7e984f1027a..433dc910c0e 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.122 1999/10/06 22:44:25 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.123 1999/10/08 02:16:22 vadim Exp $ * * NOTES * @@ -169,10 +169,12 @@ static int MaxBackends = DEF_MAXBACKENDS; * semaphores, even if you never actually use that many backends. */ -static int NextBackendTag = MAXINT; /* XXX why count down not up? */ -static char *progname = (char *) NULL; -static char **real_argv; -static int real_argc; +static int NextBackendTag = MAXINT; /* XXX why count down not up? */ +static char *progname = (char *) NULL; +static char **real_argv; +static int real_argc; + +static time_t tnow; /* * Default Values @@ -1208,6 +1210,9 @@ pmdie(SIGNAL_ARGS) if (Shutdown >= SmartShutdown) return; Shutdown = SmartShutdown; + tnow = time(NULL); + fprintf(stderr, "Smart Shutdown request at %s", ctime(&tnow)); + fflush(stderr); if (DLGetHead(BackendList)) /* let reaper() handle this */ return; /* @@ -1230,11 +1235,18 @@ pmdie(SIGNAL_ARGS) */ if (Shutdown >= FastShutdown) return; + tnow = time(NULL); + fprintf(stderr, "Fast Shutdown request at %s", ctime(&tnow)); + fflush(stderr); if (DLGetHead(BackendList)) /* let reaper() handle this */ { Shutdown = FastShutdown; if (!FatalError) + { + fprintf(stderr, "Aborting any active transaction...\n"); + fflush(stderr); SignalChildren(SIGTERM); + } return; } if (Shutdown > NoShutdown) @@ -1261,6 +1273,9 @@ pmdie(SIGNAL_ARGS) * abort all children with SIGUSR1 and exit without * attempt to properly shutdown data base system. */ + tnow = time(NULL); + fprintf(stderr, "Immediate Shutdown request at %s", ctime(&tnow)); + fflush(stderr); if (ShutdownPID > 0) kill(ShutdownPID, SIGQUIT); else if (StartupPID > 0) @@ -1308,7 +1323,11 @@ reaper(SIGNAL_ARGS) if (pid != ShutdownPID) abort(); if (exitstatus != 0) - abort(); + { + fprintf(stderr, "Shutdown failed - abort\n"); + fflush(stderr); + proc_exit(1); + } proc_exit(0); } if (StartupPID > 0) @@ -1316,7 +1335,11 @@ reaper(SIGNAL_ARGS) if (pid != StartupPID) abort(); if (exitstatus != 0) - abort(); + { + fprintf(stderr, "Startup failed - abort\n"); + fflush(stderr); + proc_exit(1); + } StartupPID = 0; FatalError = false; if (Shutdown > NoShutdown) @@ -1341,9 +1364,11 @@ reaper(SIGNAL_ARGS) return; if (StartupPID > 0 || ShutdownPID > 0) return; - if (DebugLvl) - fprintf(stderr, "%s: CleanupProc: reinitializing shared memory and semaphores\n", - progname); + tnow = time(NULL); + fprintf(stderr, "Server processes were terminated at %s" + "Reinitializing shared memory and semaphores\n", + ctime(&tnow)); + fflush(stderr); shmem_exit(0); reset_shared(PostPortName); StartupPID = StartupDataBase(); @@ -1410,6 +1435,14 @@ CleanupProc(int pid, return; } + if (!FatalError) + { + tnow = time(NULL); + fprintf(stderr, "Server process (pid %d) exited with status %d at %s" + "Terminating any active server processes...\n", + pid, exitstatus, ctime(&tnow)); + fflush(stderr); + } FatalError = true; curr = DLGetHead(BackendList); while (curr)