Re: Use standard SIGHUP and SIGTERM handlers in autoprewarm module
Fujii Masao <masao.fujii@oss.nttdata.com>
On 2020/11/10 21:30, Bharath Rupireddy wrote: > On Tue, Nov 10, 2020 at 3:04 PM Fujii Masao <masao.fujii@oss.nttdata.com> wrote: >> >>>> The main reason for having SetLatch() in >>>> SignalHandlerForConfigReload() is to wake up the calling process if >>>> waiting in WaitLatchOrSocket() or WaitLatch() and reload the new >>>> config file and use the reloaded config variables. Maybe we should >>>> give a thought on the scenarios in which the walreceiver process >>>> waits, and what happens in case the latch is set when SIGHUP is >>>> received. >>> >>> The difference is whether the config file is processed at the next >>> wakeup (by force-reply-request or SIGTERM) of walreceiver or >>> immediately. If server-reload happened frequently, say, several times >>> per second(?), we should consider to reduce the useless reloading, but >>> actually that's not the case. >> >> So, attached is the patch that makes walreceiver use both standard >> SIGTERM and SIGHUP handlers. Currently I've not found any actual >> issues by making walreceiver use standard SIGHUP handler, yet. >> > > I think it makes sense to replace WalRcv->latch with > MyProc->procLatch(as they point to the same latch) in the functions > that are called in the walreceiver process. However, we are using > walrcv->latch with spinlock, say in WalRcvForceReply() and > RequestXLogStreaming() both are called from the startup process. See > commit 45f9d08684, that made the access to the walreceiver's > latch(WalRcv->latch) by the other process(startup) spinlock protected > > And looks like, in general it's a standard practice to set latch to > wake up the process if waiting in case a SIGHUP signal is received and > reload the relevant config variables. > > Going by the above analysis, the v3 patch looks good to me. Thanks for the analysis! I pushed the patch. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION
Commits
-
Revert "Get rid of the dedicated latch for signaling the startup process".
- 00f690a23993 14.0 landed
-
Improve log message about termination of background workers.
- 98e2d58d66c8 14.0 landed
-
Use standard SIGTERM signal handler die() in test_shm_mq worker.
- ef848f4ac5a4 14.0 landed
-
Use standard SIGHUP and SIGTERM signal handlers in worker_spi.
- 2a0847720ae6 14.0 landed
-
Use standard SIGHUP and SIGTERM handlers in walreceiver.
- 1a2ae7c50fb4 14.0 landed
-
pg_prewarm: make autoprewarm leader use standard SIGHUP and SIGTERM handlers.
- 53f614f1302d 14.0 landed
-
Get rid of the dedicated latch for signaling the startup process.
- ac22929a2613 14.0 landed
-
Use standard SIGHUP handler in syslogger.
- 02d332297f9b 14.0 landed
-
Use PostgresSigHupHandler in more places.
- 1e53fe0e70f6 13.0 cited
-
Fix race condition with unprotected use of a latch pointer variable.
- 45f9d08684d9 11.0 cited
-
Remove remnants of ImmediateInterruptOK handling.
- 2505ce0be0b6 9.5.0 cited
-
Introduce Streaming Replication.
- 40f908bdcdc7 9.0.0 cited