mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
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.
This commit is contained in:
@ -3107,7 +3107,12 @@ PgstatCollectorMain(int argc, char *argv[])
|
|||||||
* satisfied by existing file.
|
* satisfied by existing file.
|
||||||
*/
|
*/
|
||||||
if (last_statwrite < last_statrequest)
|
if (last_statwrite < last_statrequest)
|
||||||
|
{
|
||||||
|
elog(LOG, "pgstat: writing new stats file");
|
||||||
pgstat_write_statsfile(false);
|
pgstat_write_statsfile(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
elog(LOG, "pgstat: attempting recv()");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try to receive and process a message. This will not block,
|
* 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")));
|
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
|
* 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 */
|
} /* end of inner message-processing loop */
|
||||||
|
|
||||||
|
elog(LOG, "pgstat: waiting");
|
||||||
|
|
||||||
/* Sleep until there's something to do */
|
/* Sleep until there's something to do */
|
||||||
wr = WaitLatchOrSocket(&pgStatLatch,
|
wr = WaitLatchOrSocket(&pgStatLatch,
|
||||||
WL_LATCH_SET | WL_POSTMASTER_DEATH | WL_SOCKET_READABLE,
|
WL_LATCH_SET | WL_POSTMASTER_DEATH | WL_SOCKET_READABLE,
|
||||||
pgStatSock,
|
pgStatSock,
|
||||||
-1L);
|
-1L);
|
||||||
|
|
||||||
|
elog(LOG, "pgstat: wait result 0x%x", wr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Emergency bailout if postmaster has died. This is to avoid the
|
* Emergency bailout if postmaster has died. This is to avoid the
|
||||||
* necessity for manual cleanup of all postmaster children.
|
* necessity for manual cleanup of all postmaster children.
|
||||||
@ -4006,7 +4018,15 @@ static void
|
|||||||
pgstat_recv_inquiry(PgStat_MsgInquiry *msg, int len)
|
pgstat_recv_inquiry(PgStat_MsgInquiry *msg, int len)
|
||||||
{
|
{
|
||||||
if (msg->inquiry_time > last_statrequest)
|
if (msg->inquiry_time > last_statrequest)
|
||||||
|
{
|
||||||
last_statrequest = msg->inquiry_time;
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user