From 8fd0498de2005b4136aaf6fcd056ca4b18e37724 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Wed, 14 Feb 2024 17:09:31 -0600 Subject: [PATCH] Remove obsolete check in SIGTERM handler for the startup process. Thanks to commit 3b00fdba9f, this check in the SIGTERM handler for the startup process is now obsolete and can be removed. Instead of leaving around the dead function write_stderr_signal_safe(), I've opted to just remove it for now. This partially reverts commit 97550c0711. Reviewed-by: Andres Freund, Noah Misch Discussion: https://postgr.es/m/20231121212008.GA3742740%40nathanxps13 --- src/backend/postmaster/startup.c | 17 +---------------- src/backend/utils/error/elog.c | 28 ---------------------------- src/include/utils/elog.h | 6 ------ 3 files changed, 1 insertion(+), 50 deletions(-) diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c index b6b53cd25f5..44b6c5bb758 100644 --- a/src/backend/postmaster/startup.c +++ b/src/backend/postmaster/startup.c @@ -19,8 +19,6 @@ */ #include "postgres.h" -#include - #include "access/xlog.h" #include "access/xlogrecovery.h" #include "access/xlogutils.h" @@ -112,20 +110,7 @@ static void StartupProcShutdownHandler(SIGNAL_ARGS) { if (in_restore_command) - { - /* - * If we are in a child process (e.g., forked by system() in - * RestoreArchivedFile()), we don't want to call any exit callbacks. - * The parent will take care of that. - */ - if (MyProcPid == (int) getpid()) - proc_exit(1); - else - { - write_stderr_signal_safe("StartupProcShutdownHandler() called in child process\n"); - _exit(1); - } - } + proc_exit(1); else shutdown_requested = true; WakeupRecovery(); diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 700fbde6db4..bba00a0087f 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -3737,31 +3737,3 @@ write_stderr(const char *fmt,...) #endif va_end(ap); } - - -/* - * Write a message to STDERR using only async-signal-safe functions. This can - * be used to safely emit a message from a signal handler. - * - * TODO: It is likely possible to safely do a limited amount of string - * interpolation (e.g., %s and %d), but that is not presently supported. - */ -void -write_stderr_signal_safe(const char *str) -{ - int nwritten = 0; - int ntotal = strlen(str); - - while (nwritten < ntotal) - { - int rc; - - rc = write(STDERR_FILENO, str + nwritten, ntotal - nwritten); - - /* Just give up on error. There isn't much else we can do. */ - if (rc == -1) - return; - - nwritten += rc; - } -} diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index 761ee2512d9..054dd2bf62f 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -536,10 +536,4 @@ extern void write_jsonlog(ErrorData *edata); */ extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2); -/* - * Write a message to STDERR using only async-signal-safe functions. This can - * be used to safely emit a message from a signal handler. - */ -extern void write_stderr_signal_safe(const char *fmt); - #endif /* ELOG_H */