On 8 September 2018 at 00:37, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Commit 37c54863c removed the code in StandbyAcquireAccessExclusiveLock
> that checked the return value of LockAcquireExtended.  AFAICS this was
> flat out wrong, because it's still passing reportMemoryError = false
> to LockAcquireExtended, meaning there are still cases where
> LOCKACQUIRE_NOT_AVAIL will be returned.  In such a situation, the
> startup process would believe it had acquired exclusive lock even
> though it hadn't, with potentially dire consequences.
>
> While we could certainly put back a test there, it's not clear to me
> that it could do anything more useful than erroring out, at least
> not without largely reverting 37c54863c.
>
> So my inclination is to remove the reportMemoryError = false parameter,
> and just let an error happen in the unlikely situation that we hit OOM
> for the lock table.
>
> That would allow this code to not use LockAcquireExtended at all.
> Indeed, I'd be rather tempted to remove that parameter from
> LockAcquireExtended altogether, as I don't believe it's either
> particularly useful, or at all well tested, or even testable.
>

I've never seen an out of memory on the lock table and that seems even less
likely since changes in 9.2.

So no problem removing that.

Are you looking for a patch to backpatch, or just a change for the future?
Changing the parameter in a backpatch seems more trouble than its worth.

-- 
Simon Riggs                http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Reply via email to