On Wednesday, October 21, 2020, Bharath Rupireddy < bharath.rupireddyforpostg...@gmail.com> wrote:
> Thanks for the feedback. > > On Wed, Oct 21, 2020 at 8:01 PM David G. Johnston > <david.g.johns...@gmail.com> wrote: > > > > On Wed, Oct 21, 2020 at 6:13 AM Magnus Hagander <mag...@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? > > > > Agreed on the overload, and the timeouts make sense too - with the > caller deciding whether a timeout results in a failure or a false return > value. > > > > 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. > > > >>> 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. > > > > Is there a requirement for waiting to be superuser only? You are not > affecting any session but your own during the waiting period. > > > > IIUC, in the same patch instead of returning an error in case of > non-superusers, do we need to wait for user provided timeout > milliseconds until the current user becomes superuser and then throw > error if still non-superuser, and proceed further if superuser? > > Do we need to have a new function that waits until a current > non-superuser in a session becomes superuser? > > Something else? Not sure how that would even be possible mid-statement. I was suggesting removing the superuser check altogether and letting any user execute “wait”. > > > > 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? > > If my understanding is wrong, could you please explain more? > Yes, this describes what i was thinking. David J.