Author: ozeigermann
Date: Fri Jan 28 15:03:28 2005
New Revision: 148947

URL: http://svn.apache.org/viewcvs?view=rev&rev=148947
Log:
Fixed timeout problem reported by Armin Waibel <[EMAIL PROTECTED]>
Modified:
   
jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java
   
jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java

Modified: 
jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java
Url: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java?view=diff&rev=148947&p1=jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java&r1=148946&p2=jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java&r2=148947
==============================================================================
--- 
jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java
    (original)
+++ 
jakarta/commons/proper/transaction/trunk/src/java/org/apache/commons/transaction/locking/GenericLockManager.java
    Fri Jan 28 15:03:28 2005
@@ -1,7 +1,7 @@
 /*
  * $Header: 
/home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//transaction/src/java/org/apache/commons/transaction/locking/GenericLockManager.java,v
 1.21 2005/01/13 23:11:56 ozeigermann Exp $
  * $Revision: 1.21 $
- * $Date: 2005/01/13 23:11:56 $
+ * $Date$
  *
  * ====================================================================
  *
@@ -158,11 +158,11 @@
      */
     public void lock(Object ownerId, Object resourceId, int targetLockLevel, 
int compatibility,
             boolean preferred, long timeoutMSecs) throws LockException {
-        timeoutCheck(ownerId);
-        
         long now = System.currentTimeMillis();
         long waitEnd = now + timeoutMSecs;
 
+        timeoutCheck(ownerId);
+        
         GenericLock lock = (GenericLock) atomicGetOrCreateLock(resourceId);
 
         GenericLock.LockOwner lockWaiter = new GenericLock.LockOwner(ownerId, 
targetLockLevel,
@@ -227,7 +227,7 @@
                             preferred, timeoutMSecs);
                     lock.registerWaiter(lockWaiter);
                 }
-                
+                now = System.currentTimeMillis();
             }
             if (!acquired) {
                 throw new LockException("Lock wait timed out", 
LockException.CODE_TIMED_OUT,

Modified: 
jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java
Url: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java?view=diff&rev=148947&p1=jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java&r1=148946&p2=jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java&r2=148947
==============================================================================
--- 
jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java
       (original)
+++ 
jakarta/commons/proper/transaction/trunk/src/test/org/apache/commons/transaction/locking/GenericLockTest.java
       Fri Jan 28 15:03:28 2005
@@ -1,7 +1,7 @@
 /*
  * $Header: 
/home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//transaction/src/test/org/apache/commons/transaction/locking/GenericLockTest.java,v
 1.12 2005/01/13 16:44:03 ozeigermann Exp $
  * $Revision: 1.12 $
- * $Date: 2005/01/13 16:44:03 $
+ * $Date$
  *
  * ====================================================================
  *
@@ -75,7 +75,7 @@
             return false;
         }
     }
-    
+
     public void testBasic() throws Throwable {
 
         sLogger.logInfo("\n\nChecking basic map features\n\n");
@@ -149,6 +149,32 @@
         canRead1 = acquireNoWait(lock, owner1, READ_LOCK);
         assertTrue(canRead1);
     }
+
+    public void testTimeout() {
+        
+        sLogger.logInfo("\n\nChecking timeouts\n\n");
+
+        ReadWriteLockManager lockManager = new ReadWriteLockManager(sLogger, 
100);
+        boolean timedOut = false;
+        try {
+            lockManager.readLock("owner1", "resource");
+            lockManager.writeLock("owner2", "resource");
+        } catch (LockException le) {
+            assertEquals(le.getCode(), LockException.CODE_TIMED_OUT);
+            timedOut = true;
+        }
+        assertTrue(timedOut);
+        lockManager = new ReadWriteLockManager(sLogger, 0);
+        timedOut = false;
+        try {
+            lockManager.readLock("owner1", "resource");
+            lockManager.writeLock("owner2", "resource");
+        } catch (LockException le) {
+            assertEquals(le.getCode(), LockException.CODE_TIMED_OUT);
+            timedOut = true;
+        }
+    }
+    
 
     public void testDeadlock() throws Throwable {
 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to