summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2020-01-07 17:38:48 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2020-01-07 17:55:21 -0300
commit8de3b68faffcb5898244bd8af3abfb6edb11543f (patch)
tree073b3d426793d87a5520722775f8f83c17a0780b /src
parent66fd0adc73a8d3b0c43423c7d263cba37edaa36b (diff)
pg_stat_activity: show NULL stmt start time for walsenders
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
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/xact.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index 9b252213d95..0dd6b82f99a 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -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