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)
This commit is contained in:
parent
61a7d576f2
commit
f62ab623ad
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user