On Thu, Nov 16, 2017 at 2:41 PM, Andres Freund <and...@anarazel.de> wrote:
>> To me, it seems like SnapBuildWaitSnapshot() is fundamentally
>> misdesigned
>
> Maybe I'm confused, but why is it fundamentally misdesigned? It's not
> such an absurd idea to wait for an xid in a WAL record.  I get that
> there's a race condition here, which obviously bad, but I don't really
> see as evidence of the above claim.
>
> I actually think this code used to be safe because ProcArrayLock used to
> be held while generating and logging the running snapshots record.  That
> was removed when fixing some other bug, but perhaps that shouldn't have
> been done...

OK.  Well, I might be overstating the case.  My comment about
fundamental misdesign was really just based on the assumption that
XactLockTableWait() could be used to wait for an XID the instant it
was generated.  That was never gonna work and there's no obvious clean
workaround for the problem.  Getting snapshot building to work
properly seems to be Hard (TM).

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Reply via email to