1
1
/*
2
- * $PostgreSQL: pgsql/contrib/pg_standby/pg_standby.c,v 1.18 2009/02/27 09:30:21 petere Exp $
2
+ * $PostgreSQL: pgsql/contrib/pg_standby/pg_standby.c,v 1.19 2009/03/18 19:27:28 heikki Exp $
3
3
*
4
4
*
5
5
* pg_standby.c
@@ -463,6 +463,15 @@ sighandler(int sig)
463
463
signaled = true;
464
464
}
465
465
466
+ /* We don't want SIGQUIT to core dump */
467
+ static void
468
+ sigquit_handler (int sig )
469
+ {
470
+ signal (SIGINT ,SIG_DFL );
471
+ kill (getpid (),SIGINT );
472
+ }
473
+
474
+
466
475
/*------------ MAIN ----------------------------------------*/
467
476
int
468
477
main (int argc ,char * * argv )
@@ -485,8 +494,21 @@ main(int argc, char **argv)
485
494
}
486
495
}
487
496
488
- (void )signal (SIGINT ,sighandler );
489
- (void )signal (SIGQUIT ,sighandler );
497
+ /*
498
+ * You can send SIGUSR1 to trigger failover.
499
+ *
500
+ * Postmaster uses SIGQUIT to request immediate shutdown. The default
501
+ * action is to core dump, but we don't want that, so trap it and
502
+ * commit suicide without core dump.
503
+ *
504
+ * We used to use SIGINT and SIGQUIT to trigger failover, but that
505
+ * turned out to be a bad idea because postmaster uses SIGQUIT to
506
+ * request immediate shutdown. We still trap SIGINT, but that may
507
+ * change in a future release.
508
+ */
509
+ (void )signal (SIGUSR1 ,sighandler );
510
+ (void )signal (SIGINT ,sighandler );/* deprecated, use SIGUSR1 */
511
+ (void )signal (SIGQUIT ,sigquit_handler );
490
512
491
513
while ((c = getopt (argc ,argv ,"cdk:lr:s:t:w:" ))!= -1 )
492
514
{