Atomikos Forum

N threads consuming from n queues are locking each other

Hi,

we face a issue, that we cannot explain to ourself. We have n queues with each time one JMS listener on it. Each of this threads will open a connection to a DB to put business data there in a nested transaction.
Since we are using XATransaction in Atomikos, one thread is always blocking the other ones, so that effectively we are only working single threaded.

Till now we have problems to understand, if this is naturally correct in case of XA or a certain problem of Atomikos.

This occurs in the locked threads:
"listenerContainerLogging-8" prio=1 tid=0x000000004da248d0 nid=0x6742 waiting for monitor entry [0x000000004c24b000..0x000000004c24bc90]      at com.atomikos.persistence.imp.StreamObjectLog.flush(StreamObjectLog.java:192)      - waiting to lock <0x00002b7278c1b7c8> (a com.atomikos.persistence.imp.StreamObjectLog)      at com.atomikos.persistence.imp.StateRecoveryManagerImp.preEnter(StateRecoveryManagerImp.java:127)      at com.atomikos.finitestates.FSMImp.notifyListeners(FSMImp.java:195)      at com.atomikos.finitestates.FSMImp.setState(FSMImp.java:283)      - locked <
0x00002b72a8101628> (a com.atomikos.finitestates.FSMImp)      at com.atomikos.icatch.imp.CoordinatorImp.setState(CoordinatorImp.java:481)      at com.atomikos.icatch.imp.CoordinatorStateHandler.commit(CoordinatorStateHandler.java:621)      at com.atomikos.icatch.imp.IndoubtStateHandler.commit(IndoubtStateHandler.java:225)      at com.atomikos.icatch.imp.CoordinatorImp.commit(CoordinatorImp.java:807)      - locked <
0x00002b72a8101628> (a com.atomikos.finitestates.FSMImp)      at com.atomikos.icatch.imp.CoordinatorImp.terminate(CoordinatorImp.java:1106)      - locked <
0x00002b72a8101628> (a com.atomikos.finitestates.FSMImp)      at com.atomikos.icatch.imp.CompositeTerminatorImp.commit(CompositeTerminatorImp.java:151)      at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:297)      at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:608)      at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:168)      at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:842)



If someone is interested, we can even provide a nice threaddump with several snapshots.

Kind regards


p.s. Nevertheless we will try to reconfigure our application to compare with another transaction manager
Tobias Stolz Send private email
Friday, August 07, 2009
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics