Re: Interruptible sleeps (was Re: CommitFest 2009-07: Yay, Kevin! Thanks, reviewers!)
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Jeff Davis <pgsql@j-davis.com>
Cc: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>, pgsql-hackers@postgresql.org, Fujii Masao <masao.fujii@gmail.com>, Magnus Hagander <magnus@hagander.net>
Date: 2010-09-12T16:29:00Z
Lists: pgsql-hackers
Jeff Davis <pgsql@j-davis.com> writes: > I glanced at the code, and I see (in OwnLatch()): > + if (latch->owner_pid != 0) > + elog(ERROR, "latch already owned"); > + latch->owner_pid = MyProcPid; > But it looks like there may be a race there. Yeah, that error check is only intended to catch gross logic errors, not to guard against race conditions. I don't think we really could prevent a race there without adding a spinlock, which seems like overkill. > ... why throw an ERROR there if it can't happen (or > indicates an inconsistent state when it does happen)? Are you suggesting that an Assert would be sufficient? regards, tom lane