Re: [HACKERS] Stats processor not restarting
От | Bruce Momjian |
---|---|
Тема | Re: [HACKERS] Stats processor not restarting |
Дата | |
Msg-id | 200703221441.l2MEfkf05255@momjian.us обсуждение исходный текст |
Ответ на | Re: [HACKERS] Stats processor not restarting (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [HACKERS] Stats processor not restarting
(Bruce Momjian <bruce@momjian.us>)
|
Список | pgsql-patches |
Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: > > Tom Lane wrote: > >> Not really, but maybe it would be sensible to reset last_pgstat_start_time > >> when doing a database-wide restart? > > > You mean like this, attached? > > I'd be fairly surprised if resetting the variable in the child process > had any effect on the postmaster... Yep, me too. ;-) > I think a correct fix would involve exposing either the variable or a > routine to zero it from pgstat.c, and having postmaster.c do that at > the points where it intentionally SIGQUITs the stats collector. OK, patch attached. I just reset the value in all places where we were killing the pgstat process and not immediately exiting ourselves. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + Index: src/backend/postmaster/pgstat.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v retrieving revision 1.149 diff -c -c -r1.149 pgstat.c *** src/backend/postmaster/pgstat.c 16 Mar 2007 17:57:36 -0000 1.149 --- src/backend/postmaster/pgstat.c 22 Mar 2007 14:40:36 -0000 *************** *** 572,577 **** --- 572,581 ---- return 0; } + void allow_immediate_pgstat_restart(void) + { + last_pgstat_start_time = 0; + } /* ------------------------------------------------------------ * Public functions used by backends follow Index: src/backend/postmaster/postmaster.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v retrieving revision 1.526 diff -c -c -r1.526 postmaster.c *** src/backend/postmaster/postmaster.c 7 Mar 2007 13:35:02 -0000 1.526 --- src/backend/postmaster/postmaster.c 22 Mar 2007 14:40:37 -0000 *************** *** 1896,1902 **** --- 1896,1905 ---- 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,1958 **** --- 1955,1964 ---- 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); *************** *** 2241,2247 **** --- 2247,2256 ---- 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,2409 **** --- 2413,2419 ---- "SIGQUIT", (int) PgStatPID))); signal_child(PgStatPID, SIGQUIT); + allow_immediate_pgstat_restart(); } /* We do NOT restart the syslogger */ Index: src/include/pgstat.h =================================================================== RCS file: /cvsroot/pgsql/src/include/pgstat.h,v retrieving revision 1.55 diff -c -c -r1.55 pgstat.h *** src/include/pgstat.h 16 Mar 2007 17:57:36 -0000 1.55 --- src/include/pgstat.h 22 Mar 2007 14:40:38 -0000 *************** *** 369,375 **** extern void pgstat_init(void); extern int pgstat_start(void); extern void pgstat_reset_all(void); ! #ifdef EXEC_BACKEND extern void PgstatCollectorMain(int argc, char *argv[]); #endif --- 369,375 ---- 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
В списке pgsql-patches по дате отправления: