]> granicus.if.org Git - postgresql/commitdiff
Add some temporary instrumentation to pgstat.c.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 14 May 2012 01:11:31 +0000 (21:11 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
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");
 }