postgres.git / summary / log / commit / refs

commit    a92b809f9da100ed5cef9d6b6ce2edd576449521
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Tue Feb 17 15:18:31 2026 +0000

    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 <andres@anarazel.de>
    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); [parent: 451650eaacd5]