Optional message to user when terminating/cancelling backend

From: Daniel Gustafsson <daniel(at)yesql(dot)se>
To: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Optional message to user when terminating/cancelling backend
Date: 2017-06-19 18:24:43
Message-ID: C2C7C3EC-CC5F-44B6-9C78-637C88BD7D14@yesql.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

When terminating, or cancelling, a backend it’s currently not possible to let
the signalled session know *why* it was dropped. This has nagged me in the
past and now it happened to come up again, so I took a stab at this. The
attached patch implements the ability to pass an optional text message to the
signalled session which is included in the error message:

SELECT pg_terminate_backend(<pid> [, message]);
SELECT pg_cancel_backend(<pid> [, message]);

Right now the message is simply appended on the error message, not sure if
errdetail or errhint would be better? Calling:

select pg_terminate_backend(<pid>, 'server rebooting');

..leads to:

FATAL: terminating connection due to administrator command: "server rebooting"

Omitting the message invokes the command just like today.

The message is stored in a new shmem area which is checked when the session is
aborted. To keep things simple a small buffer is kept per backend for the
message. If deemed too costly, keeping a central buffer from which slabs are
allocated can be done (but seemed rather complicated for little gain compared
to the quite moderate memory spend.)

cheers ./daniel

Attachment Content-Type Size
terminate_msg_v2.patch application/octet-stream 16.4 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2017-06-19 18:40:35 Re: Optional message to user when terminating/cancelling backend
Previous Message J Chapman Flack 2017-06-19 18:18:50 Re: Postgresql bug report - unexpected behavior of suppress_redundant_updates_trigger