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)));
|
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
|
static void
|
||||||
do_start_bgworker(void)
|
do_start_bgworker(void)
|
||||||
{
|
{
|
||||||
@ -5410,7 +5426,7 @@ do_start_bgworker(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
pqsignal(SIGINT, SIG_IGN);
|
pqsignal(SIGINT, SIG_IGN);
|
||||||
pqsignal(SIGUSR1, SIG_IGN);
|
pqsignal(SIGUSR1, bgworker_sigusr1_handler);
|
||||||
pqsignal(SIGFPE, SIG_IGN);
|
pqsignal(SIGFPE, SIG_IGN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user