On Thu, Nov 29, 2018 at 2:11 PM Michael Paquier <mich...@paquier.xyz> wrote:
> On Wed, Nov 28, 2018 at 09:55:37AM -0600, Jeremy Finzel wrote:
> > I noticed that the way the test module worker_spi is written, it will
> > execute the main loop SQL one more time after it gets a sigterm, THEN exit
> > 1.  This was surprising to me where I used this module as a pattern for my
> > own background worker as I would have thought it should bail immediately
> > without executing any more SQL.
> >
> > Shouldn't we add something like this line before it enters the phase where
> > it starts the transaction and executes the SQL?
>
> Yeah, I agree that this is a bad idea.

You might also be interested in this thread about custom SIGTERM
handlers and loops like this (and some related topics):

https://www.postgresql.org/message-id/flat/CAEepm%3D1c3hG1g3iKYwfa_PDsT49RBaBJsaot_qNhPSCXBm9rzA%40mail.gmail.com

The relevant TL;DR is that if you're calling anything non-trivial in
the loop, you might get stuck in wait syscall if you use a half-baked
SIGTERM handler that only knows how to exit your top level loop, but
prevents CHECK_FOR_INTERRUPTS() from detecting shutdown.

-- 
Thomas Munro
http://www.enterprisedb.com

Reply via email to