Re: dropdb --force
Pavel Stehule <pavel.stehule@gmail.com>
From: Pavel Stehule <pavel.stehule@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Amit Kapila <amit.kapila16@gmail.com>, vignesh C <vignesh21@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Ryan Lambert <ryan@rustprooflabs.com>, Thomas Munro <thomas.munro@gmail.com>, Anthony Nowocien <anowocien@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Filip Rembiałkowski <filip.rembialkowski@gmail.com>
Date: 2019-11-06T18:16:15Z
Lists: pgsql-hackers
st 6. 11. 2019 v 14:59 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal: > Amit Kapila <amit.kapila16@gmail.com> writes: > > I think there is still a window where the same problem can happen, say > > the signal has been sent by SendProcSignal to the required process and > > it releases the ProcArrayLock. Now, the target process exits and a > > new process gets the same pid before the signal is received. > > In principle, no use of Unix signals is ever safe against this sort > of race condition --- process A can never know that process B didn't > exit immediately before A does kill(B, n). In practice, it's okay > because the kernel is expected not to reassign a dead PID for some > reasonable grace period [1]. I'd be inclined to lean more heavily > on that expectation than anything internal to Postgres. That is, > remembering the PID we want to kill for some small number of > microseconds is probably a safer API than anything that depends on > the contents of the ProcArray, because there indeed *isn't* any > guarantee that a ProcArray entry won't be recycled immediately. > > regards, tom lane > > [1] and also because the kernel *can't* recycle the PID until the > parent process has reaped the zombie process-table entry. Thus, > for example, it's unconditionally safe for the postmaster to signal > its children, because those PIDs can't move until the postmaster > accepts the SIGCHLD signal and does a wait() for them. Any > interprocess signals between child processes are inherently a tad > less safe. But we've gotten away with interprocess SIGUSR1 for > decades with no reported problems. I don't really think that we > need to move the goalposts for SIGINT, and I'm entirely not in > favor of the sorts of complications that are being proposed here. > so we can return back to just simple killing. Regards Pavel
Commits
-
Add tests for '-f' option in dropdb utility.
- 8a7e9e9dad56 13.0 landed
-
Move pump_until to TestLib.pm.
- 290acac92b1d 13.0 landed
-
Add the support for '-f' option in dropdb utility.
- 80e05a088e4e 13.0 landed
-
Introduce the 'force' option for the Drop Database command.
- 1379fd537f9f 13.0 landed
-
Improve CREATE/DROP/RENAME DATABASE so that when failing because the source
- 4abd7b49f1e9 8.4.0 cited