Add some temporary instrumentation to pgstat.c.
authorTom Lane
Mon, 14 May 2012 01:11:31 +0000 (21:11 -0400)
committerTom Lane
Mon, 14 May 2012 01:11:31 +0000 (21:11 -0400)
Log main-loop blocking events and the results of inquiry messages.
This is to get some clarity as to what's happening on those Windows
buildfarm members that still don't like the latch-ified stats collector.
This bulks up the postmaster log a tad, so I won't leave it in place for
long.

src/backend/postmaster/pgstat.c

index 01273e193405a19b4e229810c8635c2f6e791ef9..cb4377708302f4a407a48b6ca448c805c3700e3d 100644 (file)
@@ -3107,7 +3107,12 @@ PgstatCollectorMain(int argc, char *argv[])
             * satisfied by existing file.
             */
            if (last_statwrite < last_statrequest)
+           {
+               elog(LOG, "pgstat: writing new stats file");
                pgstat_write_statsfile(false);
+           }
+
+           elog(LOG, "pgstat: attempting recv()");
 
            /*
             * Try to receive and process a message.  This will not block,
@@ -3124,6 +3129,9 @@ PgstatCollectorMain(int argc, char *argv[])
                         errmsg("could not read statistics message: %m")));
            }
 
+           elog(LOG, "pgstat: received msg type %d len %d",
+                msg.msg_hdr.m_type, len);
+
            /*
             * We ignore messages that are smaller than our common header
             */
@@ -3218,12 +3226,16 @@ PgstatCollectorMain(int argc, char *argv[])
            }
        }                       /* end of inner message-processing loop */
 
+       elog(LOG, "pgstat: waiting");
+
        /* Sleep until there's something to do */
        wr = WaitLatchOrSocket(&pgStatLatch,
                               WL_LATCH_SET | WL_POSTMASTER_DEATH | WL_SOCKET_READABLE,
                               pgStatSock,
                               -1L);
 
+       elog(LOG, "pgstat: wait result 0x%x", wr);
+
        /*
         * Emergency bailout if postmaster has died.  This is to avoid the
         * necessity for manual cleanup of all postmaster children.
@@ -4006,7 +4018,15 @@ static void
 pgstat_recv_inquiry(PgStat_MsgInquiry *msg, int len)
 {
    if (msg->inquiry_time > last_statrequest)
+   {
        last_statrequest = msg->inquiry_time;
+       if (last_statwrite < last_statrequest)
+           elog(LOG, "pgstat: received new inquiry message");
+       else
+           elog(LOG, "pgstat: received stale inquiry message");
+   }
+   else
+       elog(LOG, "pgstat: received out-of-order inquiry message");
 }