Commit 0d3c3aae authored by Robert Haas's avatar Robert Haas

Use procsignal_sigusr1_handler for auxiliary processes.

AuxiliaryProcessMain does ProcSignalInit, so one might expect that
auxiliary processes would need to respond to SendProcSignal, but none
of the auxiliary processes do that. Change them to use
procsignal_sigusr1_handler instead of their own private handlers so
that they do. Besides seeming more correct, this is also less code. It
shouldn't make any functional difference right now because, as far as
we know, there are no current cases where SendProcSignal targets an
auxiliary process, but there are plans to change that in the future.

Andres Freund

Discussion: http://postgr.es/m/20181030051643.elbxjww5jjgnjaxg@alap3.anarazel.de
parent 9af34f3c
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include "storage/ipc.h" #include "storage/ipc.h"
#include "storage/lwlock.h" #include "storage/lwlock.h"
#include "storage/proc.h" #include "storage/proc.h"
#include "storage/procsignal.h"
#include "storage/shmem.h" #include "storage/shmem.h"
#include "storage/smgr.h" #include "storage/smgr.h"
#include "storage/spin.h" #include "storage/spin.h"
...@@ -96,7 +97,6 @@ static volatile sig_atomic_t shutdown_requested = false; ...@@ -96,7 +97,6 @@ static volatile sig_atomic_t shutdown_requested = false;
static void bg_quickdie(SIGNAL_ARGS); static void bg_quickdie(SIGNAL_ARGS);
static void BgSigHupHandler(SIGNAL_ARGS); static void BgSigHupHandler(SIGNAL_ARGS);
static void ReqShutdownHandler(SIGNAL_ARGS); static void ReqShutdownHandler(SIGNAL_ARGS);
static void bgwriter_sigusr1_handler(SIGNAL_ARGS);
/* /*
...@@ -114,10 +114,7 @@ BackgroundWriterMain(void) ...@@ -114,10 +114,7 @@ BackgroundWriterMain(void)
WritebackContext wb_context; WritebackContext wb_context;
/* /*
* Properly accept or ignore signals the postmaster might send us. * Properly accept or ignore signals that might be sent to us.
*
* bgwriter doesn't participate in ProcSignal signalling, but a SIGUSR1
* handler is still needed for latch wakeups.
*/ */
pqsignal(SIGHUP, BgSigHupHandler); /* set flag to read config file */ pqsignal(SIGHUP, BgSigHupHandler); /* set flag to read config file */
pqsignal(SIGINT, SIG_IGN); pqsignal(SIGINT, SIG_IGN);
...@@ -125,7 +122,7 @@ BackgroundWriterMain(void) ...@@ -125,7 +122,7 @@ BackgroundWriterMain(void)
pqsignal(SIGQUIT, bg_quickdie); /* hard crash time */ pqsignal(SIGQUIT, bg_quickdie); /* hard crash time */
pqsignal(SIGALRM, SIG_IGN); pqsignal(SIGALRM, SIG_IGN);
pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGPIPE, SIG_IGN);
pqsignal(SIGUSR1, bgwriter_sigusr1_handler); pqsignal(SIGUSR1, procsignal_sigusr1_handler);
pqsignal(SIGUSR2, SIG_IGN); pqsignal(SIGUSR2, SIG_IGN);
/* /*
...@@ -427,14 +424,3 @@ ReqShutdownHandler(SIGNAL_ARGS) ...@@ -427,14 +424,3 @@ ReqShutdownHandler(SIGNAL_ARGS)
errno = save_errno; errno = save_errno;
} }
/* SIGUSR1: used for latch wakeups */
static void
bgwriter_sigusr1_handler(SIGNAL_ARGS)
{
int save_errno = errno;
latch_sigusr1_handler();
errno = save_errno;
}
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#include "storage/ipc.h" #include "storage/ipc.h"
#include "storage/lwlock.h" #include "storage/lwlock.h"
#include "storage/proc.h" #include "storage/proc.h"
#include "storage/procsignal.h"
#include "storage/shmem.h" #include "storage/shmem.h"
#include "storage/smgr.h" #include "storage/smgr.h"
#include "storage/spin.h" #include "storage/spin.h"
...@@ -179,7 +180,6 @@ static void UpdateSharedMemoryConfig(void); ...@@ -179,7 +180,6 @@ static void UpdateSharedMemoryConfig(void);
static void chkpt_quickdie(SIGNAL_ARGS); static void chkpt_quickdie(SIGNAL_ARGS);
static void ChkptSigHupHandler(SIGNAL_ARGS); static void ChkptSigHupHandler(SIGNAL_ARGS);
static void ReqCheckpointHandler(SIGNAL_ARGS); static void ReqCheckpointHandler(SIGNAL_ARGS);
static void chkpt_sigusr1_handler(SIGNAL_ARGS);
static void ReqShutdownHandler(SIGNAL_ARGS); static void ReqShutdownHandler(SIGNAL_ARGS);
...@@ -211,7 +211,7 @@ CheckpointerMain(void) ...@@ -211,7 +211,7 @@ CheckpointerMain(void)
pqsignal(SIGQUIT, chkpt_quickdie); /* hard crash time */ pqsignal(SIGQUIT, chkpt_quickdie); /* hard crash time */
pqsignal(SIGALRM, SIG_IGN); pqsignal(SIGALRM, SIG_IGN);
pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGPIPE, SIG_IGN);
pqsignal(SIGUSR1, chkpt_sigusr1_handler); pqsignal(SIGUSR1, procsignal_sigusr1_handler);
pqsignal(SIGUSR2, ReqShutdownHandler); /* request shutdown */ pqsignal(SIGUSR2, ReqShutdownHandler); /* request shutdown */
/* /*
...@@ -853,17 +853,6 @@ ReqCheckpointHandler(SIGNAL_ARGS) ...@@ -853,17 +853,6 @@ ReqCheckpointHandler(SIGNAL_ARGS)
errno = save_errno; errno = save_errno;
} }
/* SIGUSR1: used for latch wakeups */
static void
chkpt_sigusr1_handler(SIGNAL_ARGS)
{
int save_errno = errno;
latch_sigusr1_handler();
errno = save_errno;
}
/* SIGUSR2: set flag to run a shutdown checkpoint and exit */ /* SIGUSR2: set flag to run a shutdown checkpoint and exit */
static void static void
ReqShutdownHandler(SIGNAL_ARGS) ReqShutdownHandler(SIGNAL_ARGS)
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "storage/ipc.h" #include "storage/ipc.h"
#include "storage/latch.h" #include "storage/latch.h"
#include "storage/pmsignal.h" #include "storage/pmsignal.h"
#include "storage/procsignal.h"
#include "storage/standby.h" #include "storage/standby.h"
#include "utils/guc.h" #include "utils/guc.h"
#include "utils/timeout.h" #include "utils/timeout.h"
...@@ -50,7 +51,6 @@ static volatile sig_atomic_t in_restore_command = false; ...@@ -50,7 +51,6 @@ static volatile sig_atomic_t in_restore_command = false;
/* Signal handlers */ /* Signal handlers */
static void startupproc_quickdie(SIGNAL_ARGS); static void startupproc_quickdie(SIGNAL_ARGS);
static void StartupProcSigUsr1Handler(SIGNAL_ARGS);
static void StartupProcTriggerHandler(SIGNAL_ARGS); static void StartupProcTriggerHandler(SIGNAL_ARGS);
static void StartupProcSigHupHandler(SIGNAL_ARGS); static void StartupProcSigHupHandler(SIGNAL_ARGS);
...@@ -87,17 +87,6 @@ startupproc_quickdie(SIGNAL_ARGS) ...@@ -87,17 +87,6 @@ startupproc_quickdie(SIGNAL_ARGS)
} }
/* SIGUSR1: let latch facility handle the signal */
static void
StartupProcSigUsr1Handler(SIGNAL_ARGS)
{
int save_errno = errno;
latch_sigusr1_handler();
errno = save_errno;
}
/* SIGUSR2: set flag to finish recovery */ /* SIGUSR2: set flag to finish recovery */
static void static void
StartupProcTriggerHandler(SIGNAL_ARGS) StartupProcTriggerHandler(SIGNAL_ARGS)
...@@ -181,7 +170,7 @@ StartupProcessMain(void) ...@@ -181,7 +170,7 @@ StartupProcessMain(void)
pqsignal(SIGQUIT, startupproc_quickdie); /* hard crash time */ pqsignal(SIGQUIT, startupproc_quickdie); /* hard crash time */
InitializeTimeouts(); /* establishes SIGALRM handler */ InitializeTimeouts(); /* establishes SIGALRM handler */
pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGPIPE, SIG_IGN);
pqsignal(SIGUSR1, StartupProcSigUsr1Handler); pqsignal(SIGUSR1, procsignal_sigusr1_handler);
pqsignal(SIGUSR2, StartupProcTriggerHandler); pqsignal(SIGUSR2, StartupProcTriggerHandler);
/* /*
......
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
#include "storage/ipc.h" #include "storage/ipc.h"
#include "storage/lwlock.h" #include "storage/lwlock.h"
#include "storage/proc.h" #include "storage/proc.h"
#include "storage/procsignal.h"
#include "storage/smgr.h" #include "storage/smgr.h"
#include "utils/guc.h" #include "utils/guc.h"
#include "utils/hsearch.h" #include "utils/hsearch.h"
...@@ -86,7 +87,6 @@ static volatile sig_atomic_t shutdown_requested = false; ...@@ -86,7 +87,6 @@ static volatile sig_atomic_t shutdown_requested = false;
static void wal_quickdie(SIGNAL_ARGS); static void wal_quickdie(SIGNAL_ARGS);
static void WalSigHupHandler(SIGNAL_ARGS); static void WalSigHupHandler(SIGNAL_ARGS);
static void WalShutdownHandler(SIGNAL_ARGS); static void WalShutdownHandler(SIGNAL_ARGS);
static void walwriter_sigusr1_handler(SIGNAL_ARGS);
/* /*
* Main entry point for walwriter process * Main entry point for walwriter process
...@@ -114,7 +114,7 @@ WalWriterMain(void) ...@@ -114,7 +114,7 @@ WalWriterMain(void)
pqsignal(SIGQUIT, wal_quickdie); /* hard crash time */ pqsignal(SIGQUIT, wal_quickdie); /* hard crash time */
pqsignal(SIGALRM, SIG_IGN); pqsignal(SIGALRM, SIG_IGN);
pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGPIPE, SIG_IGN);
pqsignal(SIGUSR1, walwriter_sigusr1_handler); pqsignal(SIGUSR1, procsignal_sigusr1_handler);
pqsignal(SIGUSR2, SIG_IGN); /* not used */ pqsignal(SIGUSR2, SIG_IGN); /* not used */
/* /*
...@@ -337,14 +337,3 @@ WalShutdownHandler(SIGNAL_ARGS) ...@@ -337,14 +337,3 @@ WalShutdownHandler(SIGNAL_ARGS)
errno = save_errno; errno = save_errno;
} }
/* SIGUSR1: used for latch wakeups */
static void
walwriter_sigusr1_handler(SIGNAL_ARGS)
{
int save_errno = errno;
latch_sigusr1_handler();
errno = save_errno;
}
...@@ -63,6 +63,7 @@ ...@@ -63,6 +63,7 @@
#include "storage/ipc.h" #include "storage/ipc.h"
#include "storage/pmsignal.h" #include "storage/pmsignal.h"
#include "storage/procarray.h" #include "storage/procarray.h"
#include "storage/procsignal.h"
#include "utils/builtins.h" #include "utils/builtins.h"
#include "utils/guc.h" #include "utils/guc.h"
#include "utils/pg_lsn.h" #include "utils/pg_lsn.h"
...@@ -125,7 +126,6 @@ static void ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime); ...@@ -125,7 +126,6 @@ static void ProcessWalSndrMessage(XLogRecPtr walEnd, TimestampTz sendTime);
/* Signal handlers */ /* Signal handlers */
static void WalRcvSigHupHandler(SIGNAL_ARGS); static void WalRcvSigHupHandler(SIGNAL_ARGS);
static void WalRcvSigUsr1Handler(SIGNAL_ARGS);
static void WalRcvShutdownHandler(SIGNAL_ARGS); static void WalRcvShutdownHandler(SIGNAL_ARGS);
static void WalRcvQuickDieHandler(SIGNAL_ARGS); static void WalRcvQuickDieHandler(SIGNAL_ARGS);
...@@ -252,7 +252,7 @@ WalReceiverMain(void) ...@@ -252,7 +252,7 @@ WalReceiverMain(void)
pqsignal(SIGQUIT, WalRcvQuickDieHandler); /* hard crash time */ pqsignal(SIGQUIT, WalRcvQuickDieHandler); /* hard crash time */
pqsignal(SIGALRM, SIG_IGN); pqsignal(SIGALRM, SIG_IGN);
pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGPIPE, SIG_IGN);
pqsignal(SIGUSR1, WalRcvSigUsr1Handler); pqsignal(SIGUSR1, procsignal_sigusr1_handler);
pqsignal(SIGUSR2, SIG_IGN); pqsignal(SIGUSR2, SIG_IGN);
/* Reset some signals that are accepted by postmaster but not here */ /* Reset some signals that are accepted by postmaster but not here */
...@@ -766,17 +766,6 @@ WalRcvSigHupHandler(SIGNAL_ARGS) ...@@ -766,17 +766,6 @@ WalRcvSigHupHandler(SIGNAL_ARGS)
} }
/* SIGUSR1: used by latch mechanism */
static void
WalRcvSigUsr1Handler(SIGNAL_ARGS)
{
int save_errno = errno;
latch_sigusr1_handler();
errno = save_errno;
}
/* SIGTERM: set flag for ProcessWalRcvInterrupts */ /* SIGTERM: set flag for ProcessWalRcvInterrupts */
static void static void
WalRcvShutdownHandler(SIGNAL_ARGS) WalRcvShutdownHandler(SIGNAL_ARGS)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment