Remove bogus 'xid loop detected' check, which actually wasn't detecting
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 30 Apr 2000 21:23:31 +0000 (21:23 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 30 Apr 2000 21:23:31 +0000 (21:23 +0000)
loops, but just arbitrarily failing at 1000 locks.

src/backend/storage/lmgr/lock.c

index bc9a6afc9a5838ccb421900ec08ddd075790770a..86b52d9a44ef126b4a1cee8f99179bfd648c04a0 100644 (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);