Thread
-
Re: Deadlock condition in current sources
Vadim Mikheev <vmikheev@sectorbase.com> — 2001-12-18T18:55:41Z
> However, there's still a problem: GetUndoRecPtr also gets SInvalLock > while its caller holds WALInsertLock, and therefore this routine > could create the second leg of the deadlock too. Removing the > SInvalLock lock there creates the problem that backends might be > added to or deleted from the PROC array while GetUndoRecPtr runs. > I think it might be possible to survive that, by adding an assumption > that logRec.xrecoff can be set to zero atomically, but it > seems tricky. Checkpoint' undo is not used currently so just comment out GetUndoRecPtr call in CreateCheckPoint - we'll find solution later. Vadim
-
Re: Deadlock condition in current sources
Tom Lane <tgl@sss.pgh.pa.us> — 2001-12-18T19:05:43Z
"Mikheev, Vadim" <vmikheev@SECTORBASE.COM> writes: > Checkpoint' undo is not used currently so just comment out GetUndoRecPtr > call in CreateCheckPoint - we'll find solution later. I thought about that, but figured you'd object ;-) One possibility is to do something you had recommended awhile back for other reasons: add a spinlock to each PROC structure and use the spinlock, rather than SInvalLock, to protect setting and reading of xmin, logRec, and related fields. I haven't finished working out all the details, though, and this seems like a rather large change to make at this late stage of beta. Comments? regards, tom lane