A new function to wait for the backend exit after termination - Mailing list pgsql-hackers

From Bharath Rupireddy
Subject A new function to wait for the backend exit after termination
Date
Msg-id CALj2ACUBpunmyhYZw-kXCYs5NM+h6oG_7Df_Tn4mLmmUQifkqA@mail.gmail.com
Whole thread Raw
Responses Re: A new function to wait for the backend exit after termination  (Magnus Hagander <magnus@hagander.net>)
List pgsql-hackers
Hi,

Currently pg_terminate_backend(), sends SIGTERM to the backend process but doesn't ensure it's exit. There are chances that backends still are running(even after pg_terminate_backend() is called) until the interrupts are processed(using ProcessInterrupts()). This could cause problems especially in testing, for instance in a sql file right after pg_terminate_backend(), if any test case depends on the backend's non-existence[1], but the backend is not terminated. As discussed in [1], we have wait_pid()(see regress.c and sql/dblink.sql), but it's not usable across the system. In [1], we thought it would be better to have functions ensuring the backend's exit on the similar lines of pg_terminate_backend().

I propose to have two functions:

1. pg_terminate_backend_and_wait() -- which sends SIGTERM to the backend and wait's until it's exit.
2. pg_wait_backend() -- which waits for a given backend process. Note that this function has to be used carefully after pg_terminate_backend(), if used on a backend that's not ternmited it simply keeps waiting in a loop.

Attaching a WIP patch herewith.

Thoughts?


With Regards,
Bharath Rupireddy.
Attachment

pgsql-hackers by date:

Previous
From: Justin Pryzby
Date:
Subject: Re: CREATE TABLE .. PARTITION OF fails to preserve tgenabled for inherited row triggers
Next
From: Magnus Hagander
Date:
Subject: Re: A new function to wait for the backend exit after termination