diff options
Diffstat (limited to 'src/backend/postmaster/startup.c')
-rw-r--r-- | src/backend/postmaster/startup.c | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c index f43e57dadb9..4f59c71f733 100644 --- a/src/backend/postmaster/startup.c +++ b/src/backend/postmaster/startup.c @@ -19,13 +19,11 @@ */ #include "postgres.h" -#include <signal.h> -#include <unistd.h> - #include "access/xlog.h" #include "libpq/pqsignal.h" #include "miscadmin.h" #include "pgstat.h" +#include "postmaster/interrupt.h" #include "postmaster/startup.h" #include "storage/ipc.h" #include "storage/latch.h" @@ -50,7 +48,6 @@ static volatile sig_atomic_t promote_triggered = false; static volatile sig_atomic_t in_restore_command = false; /* Signal handlers */ -static void startupproc_quickdie(SIGNAL_ARGS); static void StartupProcTriggerHandler(SIGNAL_ARGS); static void StartupProcSigHupHandler(SIGNAL_ARGS); @@ -60,33 +57,6 @@ static void StartupProcSigHupHandler(SIGNAL_ARGS); * -------------------------------- */ -/* - * startupproc_quickdie() occurs when signalled SIGQUIT by the postmaster. - * - * Some backend has bought the farm, - * so we need to stop what we're doing and exit. - */ -static void -startupproc_quickdie(SIGNAL_ARGS) -{ - /* - * We DO NOT want to run proc_exit() or atexit() callbacks -- we're here - * because shared memory may be corrupted, so we don't want to try to - * clean up our transaction. Just nail the windows shut and get out of - * town. The callbacks wouldn't be safe to run from a signal handler, - * anyway. - * - * Note we do _exit(2) not _exit(0). This is to force the postmaster into - * a system reset cycle if someone sends a manual SIGQUIT to a random - * backend. This is necessary precisely because we don't clean up our - * shared memory state. (The "dead man switch" mechanism in pmsignal.c - * should ensure the postmaster sees this as a crash, too, but no harm in - * being doubly sure.) - */ - _exit(2); -} - - /* SIGUSR2: set flag to finish recovery */ static void StartupProcTriggerHandler(SIGNAL_ARGS) @@ -167,7 +137,7 @@ StartupProcessMain(void) pqsignal(SIGHUP, StartupProcSigHupHandler); /* reload config file */ pqsignal(SIGINT, SIG_IGN); /* ignore query cancel */ pqsignal(SIGTERM, StartupProcShutdownHandler); /* request shutdown */ - pqsignal(SIGQUIT, startupproc_quickdie); /* hard crash time */ + pqsignal(SIGQUIT, SignalHandlerForCrashExit); InitializeTimeouts(); /* establishes SIGALRM handler */ pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGUSR1, procsignal_sigusr1_handler); |