Re: [HACKERS] Stats processor not restarting - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [HACKERS] Stats processor not restarting |
Date | |
Msg-id | 200703221953.l2MJri200875@momjian.us Whole thread Raw |
In response to | Re: [HACKERS] Stats processor not restarting (Bruce Momjian <bruce@momjian.us>) |
List | pgsql-patches |
Applied. I did the case where we exit right away too, just for consistency. --------------------------------------------------------------------------- Bruce Momjian wrote: > 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 > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Have you searched our list archives? > > http://archives.postgresql.org -- 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. +
pgsql-patches by date: