From 6b6bcffe71afd5a090be9f561ff69bc310e5098d Mon Sep 17 00:00:00 2001 From: LiHeng Date: Tue, 2 Mar 2021 12:35:52 +0800 Subject: [PATCH] add SIGUSR1 handler for wal receiver writer thread The SIGUSR1 handler will wake up wal receiver thread once wal receiver thread had invoked SetLatch(). --- src/gausskernel/storage/replication/walrcvwriter.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/storage/replication/walrcvwriter.cpp b/src/gausskernel/storage/replication/walrcvwriter.cpp index aaf2fb6ee..4bc1379c8 100755 --- a/src/gausskernel/storage/replication/walrcvwriter.cpp +++ b/src/gausskernel/storage/replication/walrcvwriter.cpp @@ -653,6 +653,16 @@ static void ShutdownWalRcvWriter(int code, Datum arg) emptyWalRcvWriterLatch(); } +/* SIGUSR1: let latch facility handle the signal */ +static void WalRcvWriterProcSigUsr1Handler(SIGNAL_ARGS) +{ + int saveErrno = errno; + + latch_sigusr1_handler(); + + errno = saveErrno; +} + void walrcvWriterMain(void) { sigjmp_buf localSigjmpBuf; @@ -669,7 +679,7 @@ void walrcvWriterMain(void) (void)gspqsignal(SIGQUIT, walrcvWriterQuickDie); /* hard crash time */ (void)gspqsignal(SIGALRM, SIG_IGN); (void)gspqsignal(SIGPIPE, SIG_IGN); - (void)gspqsignal(SIGUSR1, SIG_IGN); + (void)gspqsignal(SIGUSR1, WalRcvWriterProcSigUsr1Handler); (void)gspqsignal(SIGUSR2, SIG_IGN); /*