Unconditionally write the statsfile when SIGHUP is received, to minimize

the window during which backends have no statistics file to read.
This commit is contained in:
Magnus Hagander 2008-08-25 18:55:43 +00:00
parent d96d7be2b5
commit f1e237b6b2
2 changed files with 7 additions and 4 deletions

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.188 2008/08/25 15:11:00 mha Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.189 2008/08/25 18:55:43 mha Exp $ -->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@ -3419,8 +3419,8 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
<filename>pg_stat_tmp</filename>. Pointing this at a RAM based filesystem
will decrease physical I/O requirements and can lead to increased
performance. If this parameter is changed when the system is running,
the statistics functions might return no information until a new
file has been written, which typically happens twice per second.
there is a small window of time until the new file has been written
during which the statistics functions might return no information.
</para>
</listitem>
</varlistentry>

View File

@ -13,7 +13,7 @@
*
* Copyright (c) 2001-2008, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.180 2008/08/25 15:11:00 mha Exp $
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.181 2008/08/25 18:55:43 mha Exp $
* ----------
*/
#include "postgres.h"
@ -2638,11 +2638,14 @@ PgstatCollectorMain(int argc, char *argv[])
/*
* Reload configuration if we got SIGHUP from the postmaster.
* Also, signal a new write of the file, so we drop a new file as
* soon as possible of the directory for it changes.
*/
if (got_SIGHUP)
{
ProcessConfigFile(PGC_SIGHUP);
got_SIGHUP = false;
need_statwrite = true;
}
/*