aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2000-04-30 21:23:31 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2000-04-30 21:23:31 +0000
commite0095c6c42c97c46e49b747f8cf4ae97ceebfbfd (patch)
treef3d9ae1a047bcccab15606efda09824388d1beeb /src
parent2f19d11fc843ec141501d2da4a86189069729012 (diff)
downloadpostgresql-e0095c6c42c97c46e49b747f8cf4ae97ceebfbfd.tar.gz
postgresql-e0095c6c42c97c46e49b747f8cf4ae97ceebfbfd.zip
Remove bogus 'xid loop detected' check, which actually wasn't detecting
loops, but just arbitrarily failing at 1000 locks.
Diffstat (limited to 'src')
-rw-r--r--src/backend/storage/lmgr/lock.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c
index bc9a6afc9a5..86b52d9a44e 100644
--- a/src/backend/storage/lmgr/lock.c
+++ b/src/backend/storage/lmgr/lock.c
@@ -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,15 +492,15 @@ 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 */
locktag->lockmethod = lockmethod;
@@ -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);