diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 5ff3577478..474e17e921 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -5354,6 +5354,22 @@ bgworker_die(SIGNAL_ARGS) MyBgworkerEntry->bgw_name))); } +/* + * Standard SIGUSR1 handler for unconnected workers + * + * Here, we want to make sure an unconnected worker will at least heed + * latch activity. + */ +static void +bgworker_sigusr1_handler(SIGNAL_ARGS) +{ + int save_errno = errno; + + latch_sigusr1_handler(); + + errno = save_errno; +} + static void do_start_bgworker(void) { @@ -5410,7 +5426,7 @@ do_start_bgworker(void) else { pqsignal(SIGINT, SIG_IGN); - pqsignal(SIGUSR1, SIG_IGN); + pqsignal(SIGUSR1, bgworker_sigusr1_handler); pqsignal(SIGFPE, SIG_IGN); }