From 128d45f53606aaeac17cdfd43df801ec6d7a3e50 Mon Sep 17 00:00:00 2001 From: Bharath Rupireddy Date: Tue, 28 Feb 2023 12:11:39 +0000 Subject: [PATCH v1] Avoid multiple SetLatch() calls in procsignal_sigusr1_handler() --- src/backend/access/transam/parallel.c | 2 +- src/backend/commands/async.c | 4 +--- .../replication/logical/applyparallelworker.c | 2 +- src/backend/replication/walsender.c | 2 ++ src/backend/storage/ipc/sinval.c | 4 +--- src/backend/tcop/postgres.c | 12 ++++-------- 6 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/backend/access/transam/parallel.c b/src/backend/access/transam/parallel.c index b26f2a64fb..e1b48295ed 100644 --- a/src/backend/access/transam/parallel.c +++ b/src/backend/access/transam/parallel.c @@ -1015,7 +1015,7 @@ HandleParallelMessageInterrupt(void) { InterruptPending = true; ParallelMessagePending = true; - SetLatch(MyLatch); + /* latch will be set by procsignal_sigusr1_handler */ } /* diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c index ef909cf4e0..ad533db655 100644 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@ -1859,9 +1859,7 @@ HandleNotifyInterrupt(void) /* signal that work needs to be done */ notifyInterruptPending = true; - - /* make sure the event is processed in due course */ - SetLatch(MyLatch); + /* latch will be set by procsignal_sigusr1_handler */ } /* diff --git a/src/backend/replication/logical/applyparallelworker.c b/src/backend/replication/logical/applyparallelworker.c index 4518683779..6db40cc121 100644 --- a/src/backend/replication/logical/applyparallelworker.c +++ b/src/backend/replication/logical/applyparallelworker.c @@ -987,7 +987,7 @@ HandleParallelApplyMessageInterrupt(void) { InterruptPending = true; ParallelApplyMessagePending = true; - SetLatch(MyLatch); + /* latch will be set by procsignal_sigusr1_handler */ } /* diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 75e8363e24..f063a712d4 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -3210,6 +3210,8 @@ HandleWalSndInitStopping(void) kill(MyProcPid, SIGTERM); else got_STOPPING = true; + + /* latch will be set by procsignal_sigusr1_handler */ } /* diff --git a/src/backend/storage/ipc/sinval.c b/src/backend/storage/ipc/sinval.c index b405f08313..bd6adcef53 100644 --- a/src/backend/storage/ipc/sinval.c +++ b/src/backend/storage/ipc/sinval.c @@ -161,9 +161,7 @@ HandleCatchupInterrupt(void) */ catchupInterruptPending = true; - - /* make sure the event is processed in due course */ - SetLatch(MyLatch); + /* latch will be set by procsignal_sigusr1_handler */ } /* diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index cab709b07b..2a3477dc80 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -3007,8 +3007,6 @@ FloatExceptionHandler(SIGNAL_ARGS) void RecoveryConflictInterrupt(ProcSignalReason reason) { - int save_errno = errno; - /* * Don't joggle the elbow of proc_exit */ @@ -3123,13 +3121,11 @@ RecoveryConflictInterrupt(ProcSignalReason reason) } /* - * Set the process latch. This function essentially emulates signal - * handlers like die() and StatementCancelHandler() and it seems prudent - * to behave similarly as they do. + * Latch will be set by procsignal_sigusr1_handler. This function + * essentially emulates signal handlers like die() and + * StatementCancelHandler() and it seems prudent to behave similarly as + * they do. */ - SetLatch(MyLatch); - - errno = save_errno; } /* -- 2.34.1