"Mikheev, Vadim" <vmikheev@SECTORBASE.COM> writes:
>> Given this, I'm wondering why we bother with having a separate
>> XidGenLock spinlock at all. Why not eliminate it and use SInval
>> spinlock to lock GetNewTransactionId and ReadNewTransactionId?
> Reading all MyProc in GetSnashot may take long time - why disallow
> new Tx to begin.
Because we need to synchronize? It bothers me that we're assuming
that fetching/storing XIDs is atomic. There's no possibility at all
of going to 8-byte XIDs as long as the code is like this.
I doubt that a spinlock per PROC structure would be a better answer,
either; the overhead of getting and releasing each lock would be
nontrivial, considering the small number of instructions spent at
each PROC in these routines.
regards, tom lane