From 611fed371227f430e71d0ff7fed037f1006b410d Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Fri, 17 Dec 2010 08:30:57 -0500 Subject: [PATCH] Reset 'ps' display just once when resolving VXID conflicts. This prevents the word "waiting" from briefly disappearing from the ps status line when ResolveRecoveryConflictWithVirtualXIDs begins a new iteration of the outer loop. Along the way, remove some useless pgstat_report_waiting() calls; the startup process doesn't appear in pg_stat_activity. Fujii Masao --- src/backend/storage/ipc/standby.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c index adf87a44c3..4f209eab68 100644 --- a/src/backend/storage/ipc/standby.c +++ b/src/backend/storage/ipc/standby.c @@ -21,7 +21,6 @@ #include "access/xact.h" #include "access/xlog.h" #include "miscadmin.h" -#include "pgstat.h" #include "storage/bufmgr.h" #include "storage/lmgr.h" #include "storage/proc.h" @@ -191,16 +190,14 @@ static void ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist, ProcSignalReason reason) { - while (VirtualTransactionIdIsValid(*waitlist)) - { - TimestampTz waitStart; - char *new_status; - - pgstat_report_waiting(true); + TimestampTz waitStart; + char *new_status; - waitStart = GetCurrentTimestamp(); - new_status = NULL; /* we haven't changed the ps display */ + waitStart = GetCurrentTimestamp(); + new_status = NULL; /* we haven't changed the ps display */ + while (VirtualTransactionIdIsValid(*waitlist)) + { /* reset standbyWait_us for each xact we wait for */ standbyWait_us = STANDBY_INITIAL_WAIT_US; @@ -246,17 +243,16 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist, } } - /* Reset ps display if we changed it */ - if (new_status) - { - set_ps_display(new_status, false); - pfree(new_status); - } - pgstat_report_waiting(false); - /* The virtual transaction is gone now, wait for the next one */ waitlist++; } + + /* Reset ps display if we changed it */ + if (new_status) + { + set_ps_display(new_status, false); + pfree(new_status); + } } void -- 2.40.0