We're running JBC 1.4.1SP9 under WebSphere Application Server 6.0. In our 
application, we're processing multiple file imports in parallel threads.

In this scenario we observe lost cache locks. In other words, the lock table 
contains locks from transactions that have been rolled back or commited. These 
locks block later transactions from modifying the nodes.
We've been able to reproduce this to some extent, here's what we know.


The following is a part of our logfile that I stripped down a bit. 
org.jboss.cache.interceptors.TxInterceptor is configured to trace. The 
transaction that interfers later is no. 199, so this is what it does:

  | 2008-10-07 19:34:21    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_put; id:1; Args: ( arg[0] = GlobalTransaction:<null>:199 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:21    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:21    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:21    
;org.jboss.cache.interceptors.TxInterceptor;;;Registering sync handler for tx 
[EMAIL PROTECTED], gtx GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:21    
;org.jboss.cache.interceptors.TxInterceptor;;;registering for TX completion: 
SynchronizationHandler(TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:199,
 [EMAIL PROTECTED]));;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:31; Args: ( arg[0] = 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)])];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.lock.IdentityLock;;;acquireReadLock(): caller 
GlobalTransaction:<null>:199 already owns lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:31; Args: ( arg[0] = 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)])];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.lock.IdentityLock;;;acquireReadLock(): caller 
GlobalTransaction:<null>:199 already owns lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:31; Args: ( arg[0] = 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)])];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.lock.IdentityLock;;;acquireReadLock(): caller 
GlobalTransaction:<null>:199 already owns lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_remove; id:5; Args: ( arg[0] = GlobalTransaction:<null>:201 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:201;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Registering sync handler for tx 
[EMAIL PROTECTED], gtx GlobalTransaction:<null>:201;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;registering for TX completion: 
SynchronizationHandler(TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:201,
 [EMAIL PROTECTED]));;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_remove; id:5; Args: ( arg[0] = GlobalTransaction:<null>:199 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_remove; id:5; Args: ( arg[0] = GlobalTransaction:<null>:201 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:201;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_remove; id:5; Args: ( arg[0] = GlobalTransaction:<null>:199 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_remove; id:5; Args: ( arg[0] = GlobalTransaction:<null>:201 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:201;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:26; Args: ( arg[0] = 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)]
 ...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.lock.IdentityLock;;;acquireReadLock(): caller 
GlobalTransaction:<null>:199 already owns lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:26; Args: ( arg[0] = 
/values/BASELOAD/MIN_FTC/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,MIN_FTC,2008-05-29,2008-05-29)]
 ...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:26; Args: ( arg[0] = 
/values/BASELOAD/MAX_FTC/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,MAX_FTC,2008-05-29,2008-05-29)]
 ...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:26; Args: ( arg[0] = 
/values/BASELOAD/DUE_OUTPUT/200000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,200000,DUE_OUTPUT,2008-05-29,2008-05-29)]
 ...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 1,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_get; id:26; Args: ( arg[0] = 
/values/BASELOAD/DUE_OUTPUT/200000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,200000,DUE_OUTPUT,2008-05-29,2008-05-29)]
 ...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
null;;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 0,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Registering sync handler for tx 
[EMAIL PROTECTED], gtx GlobalTransaction:<null>:202;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;registering for TX completion: 
SynchronizationHandler(TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:202,
 [EMAIL PROTECTED]));;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;;(null) 
call on method [_put; id:1; Args: ( arg[0] = GlobalTransaction:<null>:202 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; local 
transaction exists - registering global tx if not present for 
Thread[WebContainer : 1,5,main];;;;;FINE;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in txTable is 
GlobalTransaction:<null>:202;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL PROTECTED] is 
already registered.;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.lock.IdentityLock;;;upgrading RL to 
WL for GlobalTransaction:<null>:202, timeout=15000, locks: Read lock owners: 
[GlobalTransaction:<null>:199, GlobalTransaction:<null>:202]
  | Write lock owner: null
  | ;;;;;FINEST;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.lock.IdentityLock;;;upgrading lock 
for 
/values/BASELOAD/DUE_OUTPUT/200000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,200000,DUE_OUTPUT,2008-05-29,2008-05-29)];;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;calling aftercompletion for 
GlobalTransaction:<null>:199;;;;;FINEST;;
  | 2008-10-07 19:34:22    
;org.jboss.cache.interceptors.TxInterceptor;;;Running rollback phase;;;;;FINE;;
  | 2008-10-07 19:34:22    ;org.jboss.cache.interceptors.TxInterceptor;;; 
running rollback for GlobalTransaction:<null>:199;;;;;FINEST;;
  | 

Obviously, #199 had a problem somewhere and is being rolled back. Nothing 
unusual so far, and I'd expect the rollback to continue with a "Finished local 
commit/rollback method" message. But there's nothing like that at this point of 
the log file.
Instead, this is the next time transaction #199 occurs in the log (15 seconds 
later):


  | 2008-10-07 19:34:37    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;;(null) call on 
method [_get; id:31; Args: ( arg[0] = 
/values/BASELOAD/MIN_FTC/313020100/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,313020100,MIN_FTC,2008-05-29,2008-05-29)])];;;;;FINEST;;
  | 2008-10-07 19:34:37    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;; local transaction 
exists - registering global tx if not present for Thread[WebContainer : 
1,5,main];;;;;FINE;;
  | 2008-10-07 19:34:37    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in 
txTable is GlobalTransaction:<null>:214;;;;;FINEST;;
  | 2008-10-07 19:34:37    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;;Transaction [EMAIL 
PROTECTED] is already registered.;;;;;FINE;;
  | 2008-10-07 19:34:37    ;GMT+01:00   ;S83XB           ;Identity;1;other   ;  
              ;;org.jboss.cache.lock.IdentityLock;;;acquireReadLock(): caller 
GlobalTransaction:<null>:214 already owns lock for 
/values/BASELOAD/MIN_FTC/313020100/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,313020100,MIN_FTC,2008-05-29,2008-05-29)];;;;;FINEST;;
  | 2008-10-07 19:34:37    ;GMT+01:00   ;S83XB           ;Identity;1;other   ;  
              ;;org.jboss.cache.lock.IdentityLock;;;read lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)]
 could not be acquired by Thread[WebContainer : 0,5,main] after 15000 ms. 
Locks: Read lock owners: []
  | Write lock owner: GlobalTransaction:<null>:199
  | , lock info: write owner=GlobalTransaction:<null>:199 ([EMAIL 
PROTECTED]);;;;;FINEST;;
  | 

This is the next time transaction #199 occurs (again, 15 seconds later):

  | 2008-10-07 19:34:52    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;;(null) call on 
method [_remove; id:5; Args: ( arg[0] = GlobalTransaction:<null>:224 
...)];;;;;FINEST;;
  | 2008-10-07 19:34:52    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;; local transaction 
exists - registering global tx if not present for Thread[WebContainer : 
1,5,main];;;;;FINE;;
  | 2008-10-07 19:34:52    ;GMT+01:00   ;S83XB           ;TxInterc;1;other   ;  
              ;;org.jboss.cache.interceptors.TxInterceptor;;;Associated gtx in 
txTable is GlobalTransaction:<null>:224;;;;;FINEST;;
  | 2008-10-07 19:34:52    ;GMT+01:00   ;S83XB           ;Identity;1;other   ;  
              ;;org.jboss.cache.lock.IdentityLock;;;read lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)]
 could not be acquired by Thread[WebContainer : 0,5,main] after 15000 ms. 
Locks: Read lock owners: []
  | Write lock owner: GlobalTransaction:<null>:199
  | , lock info: write owner=GlobalTransaction:<null>:199 ([EMAIL 
PROTECTED]);;;;;FINEST;;
  | 

These are the only two times a lock could not be obtained, and both times 
transaction #199 blocks them.

The following is the first time "Finished rollback phase" is logged after 
"Running rollback phase". Between there and here it's 45 seconds of time or 
75,000 lines of log file. Note that the expected "Finished local 
commit/rollback method for GlobalTransaction::199" is never logged! I conclude 
from this that it's transaction #199 that has a problem with its rollback phase:


  | 2008-10-07 19:35:07    ;org.jboss.cache.lock.IdentityLock;;;read lock for 
/values/BASELOAD/DUE_OUTPUT/260700000/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)]
 could not be acquired by Thread[WebContainer : 0,5,main] after 15000 ms. 
Locks: Read lock owners: []
  | Write lock owner: GlobalTransaction:<null>:199
  | , lock info: write owner=GlobalTransaction:<null>:199 ([EMAIL 
PROTECTED]);;;;;FINEST;;
  | 2008-10-07 19:35:07    
;org.jboss.cache.interceptors.TxInterceptor;;;Rollback had a 
problem;;;;;WARNING;;
  | 2008-10-07 19:35:07    
;org.jboss.cache.interceptors.TxInterceptor;;;Finished rollback phase;;;;;FINE;;
  | 2008-10-07 19:35:07    
;com.sdm.p69.fileadapter.internal.importer.TransportObjectProcessor;;UNCAUGHT;  
  Stack Trace:
  |     javax.ejb.TransactionRolledbackLocalException:  ; nested exception is: 
java.util.ConcurrentModificationException
  | java.util.ConcurrentModificationException
  |     at 
java.util.AbstractList$Itr.checkForComodification(AbstractList.java(Inlined 
Compiled Code))
  |     at java.util.AbstractList$Itr.next(AbstractList.java(Compiled Code))
  |     at 
com.sdm.p32.clustertargetvalue.internal.ServiceTargetValueSet_NewCache.containsTargetValueData(ServiceTargetValueSet_NewCache.java(Compiled
 Code))
  | 

Of course we can fix the ConcurrentModificationException in our code, but such 
an error must not lead to lost locks.
Much later in the log, the lock by transaction #199 still persists and blocks 
any other locking attempts. Additionally, further locks seem to stack (tx #574):


  | 2008-10-07 19:38:50    
;com.sdm.p69.fileadapter.internal.importer.TransportObjectProcessor;;UNCAUGHT;  
  Stack Trace:
  |     javax.ejb.TransactionRolledbackLocalException:  ; nested exception is: 
Cache "TargetValueCacheDistributed": failure acquiring lock: 
fqn=/values/BASELOAD/DUE_OUTPUT/260201020, 
  | caller=GlobalTransaction:<null>:592, lock=write 
owner=GlobalTransaction:<null>:574 ([EMAIL PROTECTED])
  | TargetValueCacheDistributed lock information follows:
  | Own transaction: GlobalTransaction:<null>:592
  | Locking scheme: PESSIMISTIC, READ_COMMITTED
  | 
  | Root lock:  (read owners=[GlobalTransaction:<null>:199, 
GlobalTransaction:<null>:592, GlobalTransaction:<null>:593])
  | /values     (read owners=[GlobalTransaction:<null>:199, 
GlobalTransaction:<null>:592, GlobalTransaction:<null>:593])
  |     /BASELOAD       (read owners=[GlobalTransaction:<null>:199, 
GlobalTransaction:<null>:592, GlobalTransaction:<null>:593])
  |         /DUE_OUTPUT (read owners=[GlobalTransaction:<null>:199, 
GlobalTransaction:<null>:592, GlobalTransaction:<null>:593])
  |             /491000 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,491000,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /550000 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,550000,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /300004100      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,300004100,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /90000014       (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,90000014,DUE_OUTPUT,2008-05-29,2008-05-29)]
    (write owner=GlobalTransaction:<null>:574)
  |             /313060100      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,313060100,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /540000 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,540000,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /262104000      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,262104000,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /303250 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,303250,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /530000 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,530000,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /360005405      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,360005405,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /260201010      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260201010,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /360002200      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,360002200,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /260102000      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260102000,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /520000 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,520000,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /312040000      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,312040000,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /510000 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,510000,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /313020100      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,313020100,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /312020000      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,312020000,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /260201020      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260201020,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /307990799      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,307990799,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /311100000      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,311100000,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /300520 (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,300520,DUE_OUTPUT,2008-05-29,2008-05-29)]
      (write owner=GlobalTransaction:<null>:574)
  |             /410010100      (write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,410010100,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:574)
  |             /260700000      (read owners=[GlobalTransaction:<null>:199], 
write owner=GlobalTransaction:<null>:574)
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,260700000,DUE_OUTPUT,2008-05-29,2008-05-29)]
   (write owner=GlobalTransaction:<null>:199)
  |             /300006000
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,300006000,DUE_OUTPUT,2008-05-29,2008-05-29)]
  |             /112000
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,112000,DUE_OUTPUT,2008-05-29,2008-05-29)]
  |             /311040000
  | 
  | 
  | 
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,311040000,DUE_OUTPUT,2008-05-29,2008-05-29)]
  |             /313020210
  |                 
/[com.sdm.p32.clustertargetvalue.internal.cache.targetvalue.FindMatchingTargetValue(BASELOAD,313020210,DUE_OUTPUT,2008-05-29,2008-05-29)]
  | 

Are these conclusions correct? Even if they're not, IMO this kind of situation 
shouldn't leave these locks in the lock table.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4183799#4183799

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4183799
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to