ReadWriteLockWithUpgrade: UpgradeException with more than 1 reader/writer 
waiting to upgrade lock
-------------------------------------------------------------------------------------------------

         Key: JBCACHE-97
         URL: http://jira.jboss.com/jira/browse/JBCACHE-97
     Project: JBoss Cache
        Type: Bug
    Reporter: Bela Ban
 Assigned to: Bela Ban 
     Fix For: 1.2.1


TxDeadlockUnitTestCase has 2 methods that show the following stack traces:

testMoreThanOneUpgrader:
Upgrader#0: get(/a/b/c)
Upgrader#1: get(/a/b/c)
main: locks: 
/a      (read owners=[<null>:2, <null>:1])
    /b  (read owners=[<null>:2, <null>:1])
        /c      (read owners=[<null>:2, <null>:1])

Upgrader#0: put(/a/b/c)
Upgrader#1: put(/a/b/c)
Upgrader#1: org.jboss.cache.lock.LockingException: acquireWriteLock(): lock 
upgrade failed for /a/b/c (caller=<null>:2); - nested throwable: 
(org.jboss.cache.lock.UpgradeException: upgradeLockAttempt(): more than one 
reader trying to simultaneously upgrade to write lock)
Upgrader#0: org.jboss.cache.lock.TimeoutException: upgrade lock for /a/b/c 
could not be acquired after 3000 ms. Lock map ownership Read lock owners: 
[<null>:2]
Write lock owner: null
 (caller=<null>:1)

org.jboss.cache.lock.TimeoutException: upgrade lock for /a/b/c could not be 
acquired after 3000 ms. Lock map ownership Read lock owners: [<null>:2]
Write lock owner: null
 (caller=<null>:1)
        at 
org.jboss.cache.lock.IdentityLock.acquireWriteLock(IdentityLock.java:155)
        at org.jboss.cache.Node.acquireWriteLock(Node.java:448)
        at org.jboss.cache.Node.acquire(Node.java:417)
        at 
org.jboss.cache.interceptors.LockInterceptor.lock(LockInterceptor.java:199)
        at 
org.jboss.cache.interceptors.LockInterceptor.invoke(LockInterceptor.java:144)
        at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:40)
        at 
org.jboss.cache.interceptors.CreateIfNotExistsInterceptor.invoke(CreateIfNotExistsInterceptor.java:145)
        at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:40)
        at 
org.jboss.cache.interceptors.UnlockInterceptor.invoke(UnlockInterceptor.java:35)
        at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:2998)
        at org.jboss.cache.TreeCache.put(TreeCache.java:1657)
        at 
org.jboss.test.cache.test.local.TxDeadlockUnitTestCase$MyUpgrader._run(TxDeadlockUnitTestCase.java:346)
        at 
org.jboss.test.cache.test.local.TxDeadlockUnitTestCase$GenericThread.run(TxDeadlockUnitTestCase.java:213)
        at 
org.jboss.test.cache.test.local.TxDeadlockUnitTestCase$GenericThread.run(TxDeadlockUnitTestCase.java:213)


and

testConcurrentUpgrade():
MyThread#1: get(/a/b/c)
MyThread#2: get(/a/b/c)
MyThread#2: done, locks: 
/a      (read owners=[<null>:2])
    /b  (read owners=[<null>:2])
        /c      (read owners=[<null>:2])

MyThread#1: done, locks: 
/a      (read owners=[<null>:2, <null>:1])
    /b  (read owners=[<null>:2, <null>:1])
        /c      (read owners=[<null>:2, <null>:1])

MyThread#2: put(/a/b/c)
MyThread#1: put(/a/b/c)
MyThread#1: org.jboss.cache.lock.LockingException: acquireWriteLock(): lock 
upgrade failed for /a/b/c (caller=<null>:1); - nested throwable: 
(org.jboss.cache.lock.UpgradeException: upgradeLockAttempt(): more than one 
reader trying to simultaneously upgrade to write lock)
MyThread#2: org.jboss.cache.lock.TimeoutException: upgrade lock for /a/b/c 
could not be acquired after 3000 ms. Lock map ownership Read lock owners: 
[<null>:1]
Write lock owner: null
 (caller=<null>:2)

org.jboss.cache.lock.TimeoutException: upgrade lock for /a/b/c could not be 
acquired after 3000 ms. Lock map ownership Read lock owners: [<null>:1]
Write lock owner: null
 (caller=<null>:2)
        at 
org.jboss.cache.lock.IdentityLock.acquireWriteLock(IdentityLock.java:155)
        at org.jboss.cache.Node.acquireWriteLock(Node.java:448)
        at org.jboss.cache.Node.acquire(Node.java:417)
        at 
org.jboss.cache.interceptors.LockInterceptor.lock(LockInterceptor.java:199)
        at 
org.jboss.cache.interceptors.LockInterceptor.invoke(LockInterceptor.java:144)
        at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:40)
        at 
org.jboss.cache.interceptors.CreateIfNotExistsInterceptor.invoke(CreateIfNotExistsInterceptor.java:145)
        at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:40)
        at 
org.jboss.cache.interceptors.UnlockInterceptor.invoke(UnlockInterceptor.java:35)
        at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:2998)
        at org.jboss.cache.TreeCache.put(TreeCache.java:1657)
        at 
org.jboss.test.cache.test.local.TxDeadlockUnitTestCase$MyThread._run(TxDeadlockUnitTestCase.java:317)
        at 
org.jboss.test.cache.test.local.TxDeadlockUnitTestCase$GenericThread.run(TxDeadlockUnitTestCase.java:213)
        at 
org.jboss.test.cache.test.local.TxDeadlockUnitTestCase$GenericThread.run(TxDeadlockUnitTestCase.java:213)







-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.jboss.com/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
JBoss-Development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to