v1-0001-Avoid-multiple-SetLatch-calls-in-procsignal_sigus.patch
application/octet-stream
Filename: v1-0001-Avoid-multiple-SetLatch-calls-in-procsignal_sigus.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: Avoid multiple SetLatch() calls in procsignal_sigusr1_handler()
| File | + | − |
|---|---|---|
| src/backend/access/transam/parallel.c | 1 | 1 |
| src/backend/commands/async.c | 1 | 3 |
| src/backend/replication/logical/applyparallelworker.c | 1 | 1 |
| src/backend/replication/walsender.c | 2 | 0 |
| src/backend/storage/ipc/sinval.c | 1 | 3 |
| src/backend/tcop/postgres.c | 4 | 8 |
From 128d45f53606aaeac17cdfd43df801ec6d7a3e50 Mon Sep 17 00:00:00 2001
From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
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