]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
pg_stat_activity: show NULL stmt start time for walsenders
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 7 Jan 2020 20:38:48 +0000 (17:38 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 7 Jan 2020 20:55:21 +0000 (17:55 -0300)
Returning a non-NULL time is pointless, sinc a walsender is not a
process that would be running normal transactions anyway, but the code
was unintentionally exposing the process start time intermittently,
which was not only bogus but it also confused monitoring systems looking
for idle transactions.  Fix by avoiding all updates in walsenders.

Backpatch to pg10: previously I misidentified the branches that show
auxiliary processes in pg_stat_activity.

Reported-by: Tomas Vondra
Discussion: https://postgr.es/m/20191209234409.exe7osmyalwkt5j4@development

src/backend/access/transam/xact.c

index 9b252213d95137ba4b7b3a16386e670b6eb5a1e7..0dd6b82f99a60f33b43a1ea5dea73425366793d9 100644 (file)
@@ -758,6 +758,13 @@ GetCurrentTransactionStopTimestamp(void)
 void
 SetCurrentStatementStartTimestamp(void)
 {
+       /*
+        * Skip if on a walsender; this is not needed, and it confuses monitoring
+        * if we publish non-NULL values.
+        */
+       if (am_walsender)
+               return;
+
        if (!IsParallelWorker())
                stmtStartTimestamp = GetCurrentTimestamp();
        else