diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index c00b87c8f3..5c3d700d29 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -13,7 +13,7 @@ * * 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" @@ -3288,15 +3288,24 @@ pgstat_write_statsfile(bool permanent) last_statwrite = globalStats.stats_timestamp; /* - * It's not entirely clear whether there could be clock skew between - * backends and the collector; but just in case someone manages to - * send us a stats request time that's in the future, reset it. - * This ensures that no inquiry message can cause more than one stats - * file write to occur. + * If there is clock skew between backends and the collector, we + * could receive a stats request time that's in the future. If so, + * complain and reset last_statrequest. Resetting ensures that no + * inquiry message can cause more than one stats file write to occur. */ 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; } }