From 686956375a84f4ac9f214e402e9922b49813784a Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 22 Mar 2007 19:53:31 +0000 Subject: [PATCH] Allow the pgstat process to restart immediately after a receiving SIGQUIT signal, rather than waiting for PGSTAT_RESTART_INTERVAL. --- src/backend/postmaster/pgstat.c | 6 +++++- src/backend/postmaster/postmaster.c | 15 ++++++++++++++- src/include/pgstat.h | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 378e165707..26e6ff4ca0 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -13,7 +13,7 @@ * * Copyright (c) 2001-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.149 2007/03/16 17:57:36 mha Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.150 2007/03/22 19:53:30 momjian Exp $ * ---------- */ #include "postgres.h" @@ -572,6 +572,10 @@ pgstat_start(void) return 0; } +void allow_immediate_pgstat_restart(void) +{ + last_pgstat_start_time = 0; +} /* ------------------------------------------------------------ * Public functions used by backends follow diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 261b957043..385185eddb 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.526 2007/03/07 13:35:02 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.527 2007/03/22 19:53:30 momjian Exp $ * * NOTES * @@ -1896,7 +1896,10 @@ pmdie(SIGNAL_ARGS) signal_child(PgArchPID, SIGQUIT); /* Tell pgstat to shut down too; nothing left for it to do */ if (PgStatPID != 0) + { signal_child(PgStatPID, SIGQUIT); + allow_immediate_pgstat_restart(); + } /* Tell autovac launcher to shut down too */ if (AutoVacPID != 0) signal_child(AutoVacPID, SIGTERM); @@ -1952,7 +1955,10 @@ pmdie(SIGNAL_ARGS) signal_child(PgArchPID, SIGQUIT); /* Tell pgstat to shut down too; nothing left for it to do */ if (PgStatPID != 0) + { signal_child(PgStatPID, SIGQUIT); + allow_immediate_pgstat_restart(); + } /* Tell autovac launcher to shut down too */ if (AutoVacPID != 0) signal_child(AutoVacPID, SIGTERM); @@ -1977,7 +1983,10 @@ pmdie(SIGNAL_ARGS) if (PgArchPID != 0) signal_child(PgArchPID, SIGQUIT); if (PgStatPID != 0) + { signal_child(PgStatPID, SIGQUIT); + allow_immediate_pgstat_restart(); + } if (DLGetHead(BackendList)) SignalChildren(SIGQUIT); ExitPostmaster(0); @@ -2241,7 +2250,10 @@ reaper(SIGNAL_ARGS) signal_child(PgArchPID, SIGQUIT); /* Tell pgstat to shut down too; nothing left for it to do */ if (PgStatPID != 0) + { signal_child(PgStatPID, SIGQUIT); + allow_immediate_pgstat_restart(); + } /* Tell autovac launcher to shut down too */ if (AutoVacPID != 0) signal_child(AutoVacPID, SIGTERM); @@ -2404,6 +2416,7 @@ HandleChildCrash(int pid, int exitstatus, const char *procname) "SIGQUIT", (int) PgStatPID))); signal_child(PgStatPID, SIGQUIT); + allow_immediate_pgstat_restart(); } /* We do NOT restart the syslogger */ diff --git a/src/include/pgstat.h b/src/include/pgstat.h index ce0333a787..8e08db4c17 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -5,7 +5,7 @@ * * Copyright (c) 2001-2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/pgstat.h,v 1.55 2007/03/16 17:57:36 mha Exp $ + * $PostgreSQL: pgsql/src/include/pgstat.h,v 1.56 2007/03/22 19:53:31 momjian Exp $ * ---------- */ #ifndef PGSTAT_H @@ -369,7 +369,7 @@ extern void CreateSharedBackendStatus(void); extern void pgstat_init(void); extern int pgstat_start(void); extern void pgstat_reset_all(void); - +extern void allow_immediate_pgstat_restart(void); #ifdef EXEC_BACKEND extern void PgstatCollectorMain(int argc, char *argv[]); #endif