Commit 223f82d4 authored by Tom Lane's avatar Tom Lane

Now that we know last_statrequest > last_statwrite can be observed in the

buildfarm, expend a little more effort on the log message for it.
parent 23244d6f
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* *
* Copyright (c) 2001-2010, PostgreSQL Global Development Group * Copyright (c) 2001-2010, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.202 2010/03/12 22:19:19 tgl Exp $ * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.203 2010/03/24 16:07:10 tgl Exp $
* ---------- * ----------
*/ */
#include "postgres.h" #include "postgres.h"
...@@ -3288,15 +3288,24 @@ pgstat_write_statsfile(bool permanent) ...@@ -3288,15 +3288,24 @@ pgstat_write_statsfile(bool permanent)
last_statwrite = globalStats.stats_timestamp; last_statwrite = globalStats.stats_timestamp;
/* /*
* It's not entirely clear whether there could be clock skew between * If there is clock skew between backends and the collector, we
* backends and the collector; but just in case someone manages to * could receive a stats request time that's in the future. If so,
* send us a stats request time that's in the future, reset it. * complain and reset last_statrequest. Resetting ensures that no
* This ensures that no inquiry message can cause more than one stats * inquiry message can cause more than one stats file write to occur.
* file write to occur.
*/ */
if (last_statrequest > last_statwrite) if (last_statrequest > last_statwrite)
{ {
elog(LOG, "last_statrequest is in the future, resetting"); char *reqtime;
char *mytime;
/* Copy because timestamptz_to_str returns a static buffer */
reqtime = pstrdup(timestamptz_to_str(last_statrequest));
mytime = pstrdup(timestamptz_to_str(last_statwrite));
elog(LOG, "last_statrequest %s is later than collector's time %s",
reqtime, mytime);
pfree(reqtime);
pfree(mytime);
last_statrequest = last_statwrite; last_statrequest = last_statwrite;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment