Don't intercept SIGQUIT as a signal to trigger failover; that's what
postmaster uses for immediate shutdown. Trap SIGUSR1 as the preferred signal for that. Per report by Fujii Masao and subsequent discussion on -hackers.
This commit is contained in:
parent
06ce04ab18
commit
474ef55cb9
@ -451,14 +451,36 @@ sighandler(int sig)
|
|||||||
signaled = true;
|
signaled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We don't want SIGQUIT to core dump */
|
||||||
|
static void
|
||||||
|
sigquit_handler(int sig)
|
||||||
|
{
|
||||||
|
signal(SIGINT, SIG_DFL);
|
||||||
|
kill(getpid(), SIGINT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*------------ MAIN ----------------------------------------*/
|
/*------------ MAIN ----------------------------------------*/
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
(void) signal(SIGINT, sighandler);
|
/*
|
||||||
(void) signal(SIGQUIT, sighandler);
|
* You can send SIGUSR1 to trigger failover.
|
||||||
|
*
|
||||||
|
* Postmaster uses SIGQUIT to request immediate shutdown. The default
|
||||||
|
* action is to core dump, but we don't want that, so trap it and
|
||||||
|
* commit suicide without core dump.
|
||||||
|
*
|
||||||
|
* We used to use SIGINT and SIGQUIT to trigger failover, but that
|
||||||
|
* turned out to be a bad idea because postmaster uses SIGQUIT to
|
||||||
|
* request immediate shutdown. We still trap SIGINT, but that may
|
||||||
|
* change in a future release.
|
||||||
|
*/
|
||||||
|
(void) signal(SIGUSR1, sighandler);
|
||||||
|
(void) signal(SIGINT, sighandler); /* deprecated, use SIGUSR1 */
|
||||||
|
(void) signal(SIGQUIT, sigquit_handler);
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "cdk:lr:s:t:w:")) != -1)
|
while ((c = getopt(argc, argv, "cdk:lr:s:t:w:")) != -1)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user