diff options
Diffstat (limited to 'src/backend/postmaster/startup.c')
-rw-r--r-- | src/backend/postmaster/startup.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c index eab9c8c4ed3..64af7b8707c 100644 --- a/src/backend/postmaster/startup.c +++ b/src/backend/postmaster/startup.c @@ -37,6 +37,7 @@ /* * Flags set by interrupt handlers for later service in the redo loop. */ +static volatile sig_atomic_t got_SIGHUP = false; static volatile sig_atomic_t shutdown_requested = false; static volatile sig_atomic_t promote_signaled = false; @@ -48,6 +49,7 @@ static volatile sig_atomic_t in_restore_command = false; /* Signal handlers */ static void StartupProcTriggerHandler(SIGNAL_ARGS); +static void StartupProcSigHupHandler(SIGNAL_ARGS); /* -------------------------------- @@ -62,7 +64,19 @@ StartupProcTriggerHandler(SIGNAL_ARGS) int save_errno = errno; promote_signaled = true; - SetLatch(MyLatch); + WakeupRecovery(); + + errno = save_errno; +} + +/* SIGHUP: set flag to re-read config file at next convenient time */ +static void +StartupProcSigHupHandler(SIGNAL_ARGS) +{ + int save_errno = errno; + + got_SIGHUP = true; + WakeupRecovery(); errno = save_errno; } @@ -77,7 +91,7 @@ StartupProcShutdownHandler(SIGNAL_ARGS) proc_exit(1); else shutdown_requested = true; - SetLatch(MyLatch); + WakeupRecovery(); errno = save_errno; } @@ -123,9 +137,9 @@ HandleStartupProcInterrupts(void) /* * Process any requests or signals received recently. */ - if (ConfigReloadPending) + if (got_SIGHUP) { - ConfigReloadPending = false; + got_SIGHUP = false; StartupRereadConfig(); } @@ -158,7 +172,7 @@ StartupProcessMain(void) /* * Properly accept or ignore signals the postmaster might send us. */ - pqsignal(SIGHUP, SignalHandlerForConfigReload); /* reload config file */ + pqsignal(SIGHUP, StartupProcSigHupHandler); /* reload config file */ pqsignal(SIGINT, SIG_IGN); /* ignore query cancel */ pqsignal(SIGTERM, StartupProcShutdownHandler); /* request shutdown */ /* SIGQUIT handler was already set up by InitPostmasterChild */ |