Commit 47ce5955 authored by Heikki Linnakangas's avatar Heikki Linnakangas

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.
parent afcde99b
/* /*
* $PostgreSQL: pgsql/contrib/pg_standby/pg_standby.c,v 1.18 2009/02/27 09:30:21 petere Exp $ * $PostgreSQL: pgsql/contrib/pg_standby/pg_standby.c,v 1.19 2009/03/18 19:27:28 heikki Exp $
* *
* *
* pg_standby.c * pg_standby.c
...@@ -463,6 +463,15 @@ sighandler(int sig) ...@@ -463,6 +463,15 @@ 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)
...@@ -485,8 +494,21 @@ main(int argc, char **argv) ...@@ -485,8 +494,21 @@ main(int argc, char **argv)
} }
} }
(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)
{ {
......
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