postgres.git / summary / log / commit / refs

commit    f4e484dd00bdfe5c8e423fe5c826d8fe2a3c7135
Author:   Andres Freund <andres@anarazel.de>
Date:     Tue Jun 06 01:53:42 2017 +0000

    Have walsenders participate in procsignal infrastructure.
    
    The non-participation in procsignal was a problem for both changes in
    master, e.g. parallelism not working for normal statements run in
    walsender backends, and older branches, e.g. recovery conflicts and
    catchup interrupts not working for logical decoding walsenders.
    
    This commit thus replaces the previous WalSndXLogSendHandler with
    procsignal_sigusr1_handler.  In branches since db0f6cad48 that can
    lead to additional SetLatch calls, but that only rarely seems to make
    a difference.
    
    Author: Andres Freund
    Reviewed-By: Michael Paquier
    Discussion: https://postgr.es/m/20170421014030.fdzvvvbrz4nckrow@alap3.anarazel.de
    Backpatch: 9.4, earlier commits don't seem to benefit sufficiently


src/backend/replication/walsender.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 96ad33ea831..246dfa9c8bd 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -184,7 +184,6 @@ static XLogRecPtr logical_startptr = InvalidXLogRecPtr; /* Signal handlers */ static void WalSndSigHupHandler(SIGNAL_ARGS); -static void WalSndXLogSendHandler(SIGNAL_ARGS); static void WalSndLastCycleHandler(SIGNAL_ARGS); /* Prototypes for private functions */ @@ -2581,17 +2580,6 @@ WalSndSigHupHandler(SIGNAL_ARGS) errno = save_errno; } -/* SIGUSR1: set flag to send WAL records */ -static void -WalSndXLogSendHandler(SIGNAL_ARGS) -{ - int save_errno = errno; - - latch_sigusr1_handler(); - - errno = save_errno; -} - /* SIGUSR2: set flag to do a last cycle and shut down afterwards */ static void WalSndLastCycleHandler(SIGNAL_ARGS) @@ -2626,7 +2614,7 @@ WalSndSignals(void) pqsignal(SIGQUIT, quickdie); /* hard crash time */ InitializeTimeouts(); /* establishes SIGALRM handler */ pqsignal(SIGPIPE, SIG_IGN); - pqsignal(SIGUSR1, WalSndXLogSendHandler); /* request WAL sending */ + pqsignal(SIGUSR1, procsignal_sigusr1_handler); pqsignal(SIGUSR2, WalSndLastCycleHandler); /* request a last cycle and * shutdown */ [parent: 6da999635898]