mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
Back-patch assorted latch-related fixes.
Fix a whole bunch of signal handlers that had been hacked to do things that might change errno, without adding the necessary save/restore logic for errno. Also make some minor fixes in unix_latch.c, and clean up bizarre and unsafe scheme for disowning the process's latch. While at it, rename the PGPROC latch field to procLatch for consistency with 9.2. Issues noted while reviewing a patch by Peter Geoghegan.
This commit is contained in:
@ -9881,34 +9881,50 @@ startupproc_quickdie(SIGNAL_ARGS)
|
||||
static void
|
||||
StartupProcSigUsr1Handler(SIGNAL_ARGS)
|
||||
{
|
||||
int save_errno = errno;
|
||||
|
||||
latch_sigusr1_handler();
|
||||
|
||||
errno = save_errno;
|
||||
}
|
||||
|
||||
/* SIGUSR2: set flag to finish recovery */
|
||||
static void
|
||||
StartupProcTriggerHandler(SIGNAL_ARGS)
|
||||
{
|
||||
int save_errno = errno;
|
||||
|
||||
promote_triggered = true;
|
||||
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;
|
||||
}
|
||||
|
||||
/* SIGTERM: set flag to abort redo and exit */
|
||||
static void
|
||||
StartupProcShutdownHandler(SIGNAL_ARGS)
|
||||
{
|
||||
int save_errno = errno;
|
||||
|
||||
if (in_restore_command)
|
||||
proc_exit(1);
|
||||
else
|
||||
shutdown_requested = true;
|
||||
WakeupRecovery();
|
||||
|
||||
errno = save_errno;
|
||||
}
|
||||
|
||||
/* Handle SIGHUP and SIGTERM signals of startup process */
|
||||
|
Reference in New Issue
Block a user