Re: A new function to wait for the backend exit after termination
Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
To: Magnus Hagander <magnus@hagander.net>,
"David G. Johnston" <david.g.johnston@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>,
Fujii Masao <masao.fujii@oss.nttdata.com>
Date: 2020-10-28T11:50:46Z
Lists: pgsql-hackers
Attachments
- v2-0001-pg_wait_backend-and-pg_terminate_backend-with-wai.patch (application/x-patch) patch v2-0001
On Wed, Oct 21, 2020 at 6:43 PM Magnus Hagander <magnus@hagander.net> wrote: > > I think it would be nicer to have a pg_terminate_backend(pid, wait=false), so a function with a second parameter which defaults to the current behaviour of not waiting. And it might be a good idea to also give it a timeout parameter? > Done. > >> 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. > > It seems this one also very much would need a timeout value. > Done. > > And surely we should show some sort of wait event when it's waiting. > Added two wait events. > >> If the backend is terminated within the user specified timeout then >> the function returns true, otherwise false. > > I’m suggesting an option for the second case to fail instead of returning false. > Done. > > > I could imagine, in theory at least, wanting to wait for a backend to go idle as well as for it disappearing. Scope creep in terms of this patch's goal but worth at least considering now. > > IIUC, do we need a new option, something like pg_wait_backend(pid, > timeout, waituntil) where "waituntil" if specified "idle" waits until > the given backend goes to idle mode, or "termination" waits until > termination? > Done. Attaching a v2 patch herewith. Thoughts and feedback are welcome. Below things are still pending, which I plan to work on soon: 1. More testing and addition of test cases into the regression test suite. 2. Addition of the new function information into the docs. With Regards, Bharath Rupireddy. EnterpriseDB: http://www.enterprisedb.com
Commits
-
Copy-edit text for the pg_terminate_backend() "timeout" parameter.
- 0aac73e6a260 14.0 landed
-
Remove pg_wait_for_backend_termination().
- 5f1df62a459b 14.0 landed
-
Add functions to wait for backend termination
- aaf043257205 14.0 landed
-
Fix typo in comment.
- 6742e14959a3 14.0 cited