Handle SIGTERM in fe_utils/cancel.c

Started by Tristan Partinalmost 3 years ago3 messageshackers
Jump to latest
#1Tristan Partin
tristan@neon.tech

Hello,

This is a way that would solve bug #17698[1]/messages/by-id/17698-58a6ab8caec496b0@postgresql.org. It just reuses the same
handler as SIGINT (with a function rename).

This patch works best if it is combined with my previous submission[2]/messages/by-id/CSSWBAX56CVY.291H6ZNNHK7EO@c3po.
I can rebase that submission if and when this patch is pulled in.

[1]: /messages/by-id/17698-58a6ab8caec496b0@postgresql.org
[2]: /messages/by-id/CSSWBAX56CVY.291H6ZNNHK7EO@c3po

--
Tristan Partin
Neon (https://neon.tech)

Attachments:

v1-0001-Handle-SIGTERM-in-fe_utils-cancel.c.patchtext/x-patch; charset=utf-8; name=v1-0001-Handle-SIGTERM-in-fe_utils-cancel.c.patchDownload+4-5
#2Michael Paquier
michael@paquier.xyz
In reply to: Tristan Partin (#1)
Re: Handle SIGTERM in fe_utils/cancel.c

On Mon, May 22, 2023 at 12:26:34PM -0500, Tristan Partin wrote:

This is a way that would solve bug #17698[1]. It just reuses the same
handler as SIGINT (with a function rename).

This patch works best if it is combined with my previous submission[2].
I can rebase that submission if and when this patch is pulled in.

Not sure that this is a good idea long-term. Currently, the code
paths calling setup_cancel_handler() from cancel.c don't have a custom
handling for SIGTERM, but that may not be the case forever.
--
Michael

#3Tristan Partin
tristan@neon.tech
In reply to: Michael Paquier (#2)
Re: Handle SIGTERM in fe_utils/cancel.c

On Tue May 23, 2023 at 7:51 PM CDT, Michael Paquier wrote:

On Mon, May 22, 2023 at 12:26:34PM -0500, Tristan Partin wrote:

This is a way that would solve bug #17698[1]. It just reuses the same
handler as SIGINT (with a function rename).

This patch works best if it is combined with my previous submission[2].
I can rebase that submission if and when this patch is pulled in.

Not sure that this is a good idea long-term. Currently, the code
paths calling setup_cancel_handler() from cancel.c don't have a custom
handling for SIGTERM, but that may not be the case forever.

I am more than happy to essentially just copy & paste some code that
will be specific to pgbench if that is preferrable for the purposes of
merging this patch. Another idea would be to change the signature of
setup_cancel_handler() to something like:

void
setup_cancel_handler(cb pre, cb post, int signal, ...); (null-terminate)

Then a client could state exactly what signals it wants to register with
this generic cancel handler.

--
Tristan Partin
Neon (https://neon.tech)