[jbossts-issues] [JBoss JIRA] (JBTM-1951) Deadlock in JBOSS Transaction Reaper

Rico Neubauer (JIRA) jira-events at lists.jboss.org
Wed Nov 13 08:18:06 EST 2013


    [ https://issues.jboss.org/browse/JBTM-1951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12923156#comment-12923156 ] 

Rico Neubauer commented on JBTM-1951:
-------------------------------------

Experienced this also with JBoss 7.1.1 running jbossts 4.16.6.
Involved threads are exactly the same, but posting it again, since my stacks include more line numbers:

Found one Java-level deadlock:
=============================
"Thread-503 (HornetQ-client-global-threads-325484596)":
  waiting to lock monitor 0x0000000066418878 (object 0x0000000786d861d0, a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction),
  which is held by "Transaction Reaper Worker 0"
"Transaction Reaper Worker 0":
  waiting for ownable synchronizer 0x0000000785c9d658, (a java.util.concurrent.locks.ReentrantLock$FairSync),
  which is held by "Thread-503 (HornetQ-client-global-threads-325484596)"

Java stack information for the threads listed above:
===================================================
"Thread-503 (HornetQ-client-global-threads-325484596)":
	at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1573)
	- waiting to lock <0x0000000786d861d0> (a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction)
	at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:118)
	at com.arjuna.ats.arjuna.AtomicAction.abort(AtomicAction.java:188)
	at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1154)
	at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:117)
	at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
	at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.afterDelivery(MessageEndpointInvocationHandler.java:72)
	at sun.reflect.GeneratedMethodAccessor448.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.handle(AbstractInvocationHandler.java:60)
	at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:136)
	at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
	at com.sun.proxy.$Proxy84.afterDelivery(Unknown Source)
	at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:287)
	at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:983)
	at org.hornetq.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48)
	at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1113)
	at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:107)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
"Transaction Reaper Worker 0":
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x0000000785c9d658> (a java.util.concurrent.locks.ReentrantLock$FairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
	at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:229)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
	at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.lock(BaseWrapperManagedConnection.java:361)
	at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.end(XAManagedConnection.java:290)
	at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.end(XAResourceWrapperImpl.java:99)
	at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:312)
	at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2874)
	at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2853)
	at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1616)
	- locked <0x0000000786d861d0> (a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction)
	at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:118)
	at com.arjuna.ats.arjuna.AtomicAction.cancel(AtomicAction.java:217)
	at com.arjuna.ats.arjuna.coordinator.TransactionReaper.doCancellations(TransactionReaper.java:370)
	at com.arjuna.ats.internal.arjuna.coordinator.ReaperWorkerThread.run(ReaperWorkerThread.java:78)
                
> Deadlock in JBOSS Transaction Reaper
> ------------------------------------
>
>                 Key: JBTM-1951
>                 URL: https://issues.jboss.org/browse/JBTM-1951
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 4.16.2
>            Reporter: Peter Klauser
>            Assignee: Tom Jenkinson
>
> Found one Java-level deadlock:
> =============================
> "Timer-93":
> waiting to lock monitor 0x00007f8fac190cf8 (object 0x00000000d6d50830, a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction),
> which is held by "Transaction Reaper Worker 0"
> "Transaction Reaper Worker 0":
> waiting for ownable synchronizer 0x00000000d6861408, (a java.util.concurrent.locks.ReentrantLock$FairSync),
> which is held by "Timer-93" 
> Java stack information for the threads listed above:
> ===================================================
> "Timer-93":
> at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1573)
> - waiting to lock <0x00000000d6d50830> (a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction)
> at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:118)
> at com.arjuna.ats.arjuna.AtomicAction.abort(AtomicAction.java:188)
> at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.rollbackAndDisassociate(TransactionImple.java:1247)
> at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:134)
> at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114)
> at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.afterDelivery(MessageEndpointInvocationHandler.java:70)
> at sun.reflect.GeneratedMethodAccessor1756.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.handle(AbstractInvocationHandler.java:60)
> at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:136)
> at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
> at com.sun.proxy.$Proxy852.afterDelivery(Unknown Source)
> at sunrise.ra.aq.inbound.AqServerSession.run(AqServerSession.java:141)
> at java.util.TimerThread.mainLoop(Unknown Source)
> at java.util.TimerThread.run(Unknown Source)
> "Transaction Reaper Worker 0":
> at sun.misc.Unsafe.park(Native Method)
> - parking to wait for <0x00000000d6861408> (a java.util.concurrent.locks.ReentrantLock$FairSync)
> at java.util.concurrent.locks.LockSupport.park(Unknown Source)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(Unknown Source)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(Unknown Source)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Unknown Source)
> at java.util.concurrent.locks.ReentrantLock$FairSync.lock(Unknown Source)
> at java.util.concurrent.locks.ReentrantLock.lock(Unknown Source)
> at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.lock(BaseWrapperManagedConnection.java:361)
> at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.end(XAManagedConnection.java:290)
> at org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.end(XAResourceWrapperImpl.java:99)
> at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:312)
> at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2874)
> at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2853)
> at com.arjuna.ats.arjuna.coordinator.BasicAction.Abort(BasicAction.java:1616)
> - locked <0x00000000d6d50830> (a com.arjuna.ats.internal.jta.transaction.arjunacore.AtomicAction)
> at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.cancel(TwoPhaseCoordinator.java:118)
> at com.arjuna.ats.arjuna.AtomicAction.cancel(AtomicAction.java:217)
> at com.arjuna.ats.arjuna.coordinator.TransactionReaper.doCancellations(TransactionReaper.java:370)
> at com.arjuna.ats.internal.arjuna.coordinator.ReaperWorkerThread.run(ReaperWorkerThread.java:78) 
> Found 1 deadlock.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jbossts-issues mailing list