postgres.git / summary / log / commit / refs

commit    611fed371227f430e71d0ff7fed037f1006b410d
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Fri Dec 17 13:30:57 2010 +0000
First released in: 9.1.0

    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 adf87a44c3d..4f209eab688 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 [parent: df142bf82c84]