Fix a race condition that I introduced into sinvaladt.c during the recent

Tom Lane <tgl@sss.pgh.pa.us>

Commit: dc02a4814a90be9f948bc921254c35b63d764dcc
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2008-07-18T14:45:48Z
Releases: 8.4.0
Fix a race condition that I introduced into sinvaladt.c during the recent
rewrite.  When called from SIInsertDataEntries, SICleanupQueue releases
the write lock if it has to issue a kill() to signal some laggard backend.
That still seems like a good idea --- but it's possible that by the time
we get the lock back, there are no longer enough free message slots to
satisfy SIInsertDataEntries' requirement.  Must recheck, and repeat the
whole SICleanupQueue process if not.  Noted while reading code.

Files

PathChange+/−
src/backend/storage/ipc/sinvaladt.c modified +17 −11