diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2013-04-10 16:01:16 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2013-04-10 16:01:16 -0300 |
commit | f62ab623adc63023c6aee22e2a6fe190439ca0c3 (patch) | |
tree | 3ce329709f455641b86b95a8ce03e2f24cf83962 /src/backend | |
parent | 61a7d576f2a287ef59071da9d9d7a0cd473ed98b (diff) | |
download | postgresql-f62ab623adc63023c6aee22e2a6fe190439ca0c3.tar.gz postgresql-f62ab623adc63023c6aee22e2a6fe190439ca0c3.zip |
Fix SIGUSR1 handling by unconnected bgworkers
Latch activity was not being detected by non-database-connected workers; the
SIGUSR1 signal handler which is normally in charge of that was set to SIG_IGN.
Create a simple handler to call latch_sigusr1_handler instead.
Robert Haas (bug report and suggested fix)
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/postmaster/postmaster.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 5ff35774787..474e17e9218 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); } |