OSDN Git Service

Unconditionally write the statsfile when SIGHUP is received, to minimize
authorMagnus Hagander <magnus@hagander.net>
Mon, 25 Aug 2008 18:55:43 +0000 (18:55 +0000)
committerMagnus Hagander <magnus@hagander.net>
Mon, 25 Aug 2008 18:55:43 +0000 (18:55 +0000)
the window during which backends have no statistics file to read.

doc/src/sgml/config.sgml
src/backend/postmaster/pgstat.c

index 3eca0ba..757ee2a 100644 (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>
index c822b35..990b10e 100644 (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;
                }
 
                /*