Remove bogus 'xid loop detected' check, which actually wasn't detecting

loops, but just arbitrarily failing at 1000 locks.
This commit is contained in:
Tom Lane 2000-04-30 21:23:31 +00:00
parent 2f19d11fc8
commit e0095c6c42
1 changed files with 8 additions and 21 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.66 2000/02/22 09:55:20 inoue Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.67 2000/04/30 21:23:31 tgl Exp $
*
* NOTES
* Outside modules can create a lock table and acquire/release
@ -492,14 +492,14 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag, LOCKMODE lockmode)
int is_user_lock;
is_user_lock = (lockmethod == USER_LOCKMETHOD);
#ifdef USER_LOCKS_DEBUG
if (is_user_lock)
{
#ifdef USER_LOCKS_DEBUG
TPRINTF(TRACE_USERLOCKS, "LockAcquire: user lock [%u] %s",
locktag->objId.blkno,
lock_types[lockmode]);
#endif
}
#endif
#endif
/* ???????? This must be changed when short term locks will be used */
@ -1266,14 +1266,11 @@ LockReleaseAll(LOCKMETHOD lockmethod, SHM_QUEUE *lockQueue)
LOCK *lock;
bool found;
int trace_flag;
int xidtag_lockmethod;
#ifdef USER_LOCKS
int is_user_lock_table,
count,
int xidtag_lockmethod,
nleft;
count = nleft = 0;
#ifdef USER_LOCKS
int is_user_lock_table;
is_user_lock_table = (lockmethod == USER_LOCKMETHOD);
trace_flag = (lockmethod == 2) ? TRACE_USERLOCKS : TRACE_LOCKS;
@ -1283,6 +1280,8 @@ LockReleaseAll(LOCKMETHOD lockmethod, SHM_QUEUE *lockQueue)
TPRINTF(trace_flag, "LockReleaseAll: lockmethod=%d, pid=%d",
lockmethod, MyProcPid);
nleft = 0;
Assert(lockmethod < NumLockMethods);
lockMethodTable = LockMethodTable[lockmethod];
if (!lockMethodTable)
@ -1304,16 +1303,6 @@ LockReleaseAll(LOCKMETHOD lockmethod, SHM_QUEUE *lockQueue)
{
bool wakeupNeeded = false;
/*
* Sometimes the queue appears to be messed up.
*/
if (count++ > 1000)
{
elog(NOTICE, "LockReleaseAll: xid loop detected, giving up");
nleft = 0;
break;
}
/* ---------------------------
* XXX Here we assume the shared memory queue is circular and
* that we know its internal structure. Should have some sort of
@ -1485,9 +1474,7 @@ LockReleaseAll(LOCKMETHOD lockmethod, SHM_QUEUE *lockQueue)
ProcLockWakeup(waitQueue, lockmethod, lock);
}
#ifdef USER_LOCKS
next_item:
#endif
if (done)
break;
SHMQueueFirst(&xidLook->queue, (Pointer *) &tmp, &tmp->queue);