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]