v8-0007-Use-standard-die-handler-for-SIGTERM-in-bgworkers.patch
text/x-patch
Filename: v8-0007-Use-standard-die-handler-for-SIGTERM-in-bgworkers.patch
Type: text/x-patch
Part: 6
Message:
Re: Interrupts vs signals
Patch
Format: format-patch
Series: patch v8-0007
Subject: Use standard die() handler for SIGTERM in bgworkers
| File | + | − |
|---|---|---|
| doc/src/sgml/bgworker.sgml | 2 | 0 |
| src/backend/postmaster/bgworker.c | 1 | 15 |
From 1b0fa24f09d69e41881c33ed6bdec8f023f91f43 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Tue, 20 Jan 2026 16:57:25 +0200
Subject: [PATCH v8 7/8] Use standard die() handler for SIGTERM in bgworkers
---
doc/src/sgml/bgworker.sgml | 2 ++
src/backend/postmaster/bgworker.c | 16 +---------------
2 files changed, 3 insertions(+), 15 deletions(-)
diff --git a/doc/src/sgml/bgworker.sgml b/doc/src/sgml/bgworker.sgml
index 4699ef6345f..b239e38aaae 100644
--- a/doc/src/sgml/bgworker.sgml
+++ b/doc/src/sgml/bgworker.sgml
@@ -254,6 +254,8 @@ typedef struct BackgroundWorker
<literal>WL_POSTMASTER_DEATH</literal> flag is set when calling that function, and
verify the return code for a prompt exit in the emergency case that
<command>postgres</command> itself has terminated.
+
+ TODO document that: you should call CHECK_FOR_INTERRUPTS(), to react promptly to terminate request (SIGTERM)
</para>
<para>
diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c
index ed74d966026..06cfadaf88a 100644
--- a/src/backend/postmaster/bgworker.c
+++ b/src/backend/postmaster/bgworker.c
@@ -712,20 +712,6 @@ SanityCheckBackgroundWorker(BackgroundWorker *worker, int elevel)
return true;
}
-/*
- * Standard SIGTERM handler for background workers
- */
-static void
-bgworker_die(SIGNAL_ARGS)
-{
- sigprocmask(SIG_SETMASK, &BlockSig, NULL);
-
- ereport(FATAL,
- (errcode(ERRCODE_ADMIN_SHUTDOWN),
- errmsg("terminating background worker \"%s\" due to administrator command",
- MyBgworkerEntry->bgw_type)));
-}
-
/*
* Main entry point for background worker processes.
*/
@@ -782,7 +768,7 @@ BackgroundWorkerMain(const void *startup_data, size_t startup_data_len)
pqsignal(SIGUSR1, SIG_IGN);
pqsignal(SIGFPE, SIG_IGN);
}
- pqsignal(SIGTERM, bgworker_die);
+ pqsignal(SIGTERM, die);
/* SIGQUIT handler was already set up by InitPostmasterChild */
pqsignal(SIGHUP, SIG_IGN);
--
2.47.3