]> granicus.if.org Git - postgresql/commitdiff
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);