提交 7d88bb73 编写于 作者: T Tom Lane

Add some temporary instrumentation to pgstat.c.

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.
上级 b8347138
......@@ -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");
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册