Re: Cancel/Kill backend functions - Mailing list pgsql-patches

From Tom Lane
Subject Re: Cancel/Kill backend functions
Date
Msg-id 14315.1085720470@sss.pgh.pa.us
Whole thread Raw
In response to Re: Cancel/Kill backend functions  (Neil Conway <neilc@samurai.com>)
Responses Re: Cancel/Kill backend functions
List pgsql-patches
Neil Conway <neilc@samurai.com> writes:
> Magnus Hagander wrote:
>> You'd actually need to get a pid *reuse* during that short time.

> That isn't so implausible on a system which assigns PIDs randomly.
> Holding the SInvalLock doesn't remove the race condition, but it
> makes it less likely to occur for essentially very little cost.

Other than holding a fairly critical lock for an operation that will
take an unknown amount of time.

Since PG is not root, even if the PID has been reused, it's not possible
to kill some random process with this.  You could only kill another
postgres process, and in practice this would more or less have to be a
new backend that had gotten reassigned the same PID just abandoned a
moment before by the one you intended to kill.

I don't think this is a very likely scenario.  In fact, I suspect there
are interlocks in the kernel to prevent recycling a PID quite that
quickly, because otherwise practically *any* use of kill() would be too
hazardous to contemplate.

>> Bottom line -  while maybe slightly more correcet, not sure it's
>> necessary.

> IMHO it's worth doing.

I disagree.

            regards, tom lane

pgsql-patches by date:

Previous
From: Claudio Natoli
Date:
Subject: Re: win32 locale fixes
Next
From: Alvaro Herrera
Date:
Subject: Re: Cancel/Kill backend functions