From a92b809f9da100ed5cef9d6b6ce2edd576449521 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Tue, 17 Feb 2026 17:18:31 +0200 Subject: [PATCH] Ignore SIGINT in walwriter and walsummarizer Previously, SIGINT was treated the same as SIGTERM in walwriter and walsummarizer. That decision goes back to when the walwriter process was introduced (commit ad4295728e04), and was later copied to walsummarizer. It was a pretty arbitrary decision back then, and we haven't adopted that convention in all the other processes that have been introduced later. Summary of how other processes respond to SIGINT: - Autovacuum launcher: Cancel the current iteration of launching - bgworker: Ignore (unless connected to a database) - checkpointer: Request shutdown checkpoint - bgwriter: Ignore - pgarch: Ignore - startup process: Ignore - walreceiver: Ignore - IO worker: die() IO workers are a notable exception in that they exit on SIGINT, and there's a documented reason for that: IO workers ignore SIGTERM, so SIGINT provides a way to manually kill them. (They do respond to SIGUSR2, though, like all the other processes that we don't want to exit immediately on SIGTERM on operating system shutdown.) To make this a little more consistent, ignore SIGINT in walwriter and walsummarizer. They have no "query" to cancel, and they react to SIGTERM just fine. Reviewed-by: Andres Freund Discussion: https://www.postgresql.org/message-id/818bafaf-1e77-4c78-8037-d7120878d87c@iki.fi --- src/backend/postmaster/walsummarizer.c | 5 +---- src/backend/postmaster/walwriter.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/backend/postmaster/walsummarizer.c b/src/backend/postmaster/walsummarizer.c index 2d8f57099fd..742137edad6 100644 --- a/src/backend/postmaster/walsummarizer.c +++ b/src/backend/postmaster/walsummarizer.c @@ -241,12 +241,9 @@ WalSummarizerMain(const void *startup_data, size_t startup_data_len) /* * Properly accept or ignore signals the postmaster might send us - * - * We have no particular use for SIGINT at the moment, but seems - * reasonable to treat like SIGTERM. */ pqsignal(SIGHUP, SignalHandlerForConfigReload); - pqsignal(SIGINT, SignalHandlerForShutdownRequest); + pqsignal(SIGINT, SIG_IGN); /* no query to cancel */ pqsignal(SIGTERM, SignalHandlerForShutdownRequest); /* SIGQUIT handler was already set up by InitPostmasterChild */ pqsignal(SIGALRM, SIG_IGN); diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index 23e79a32345..7c0e2809c17 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -98,12 +98,9 @@ WalWriterMain(const void *startup_data, size_t startup_data_len) /* * Properly accept or ignore signals the postmaster might send us - * - * We have no particular use for SIGINT at the moment, but seems - * reasonable to treat like SIGTERM. */ pqsignal(SIGHUP, SignalHandlerForConfigReload); - pqsignal(SIGINT, SignalHandlerForShutdownRequest); + pqsignal(SIGINT, SIG_IGN); /* no query to cancel */ pqsignal(SIGTERM, SignalHandlerForShutdownRequest); /* SIGQUIT handler was already set up by InitPostmasterChild */ pqsignal(SIGALRM, SIG_IGN);