Atomikos Forum

DeadLock at TransactionManagerShutdown

Using version 3.6.6 is did get a deadlock on shutdown and i am lost.
This is the stacktrace of both threads:



"Thread-7" prio=10 tid=0x00007fbc60b11000 nid=0x7a38 in Object.wait() [0x00007fbc5d2ae000]
  java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00007fbc6b3a8ab8> (a com.atomikos.icatch.imp.TerminationResult)
        at java.lang.Object.wait(Object.java:485)
        at com.atomikos.icatch.imp.Result.waitForReplies(Result.java:224)
        - locked <0x00007fbc6b3a8ab8> (a com.atomikos.icatch.imp.TerminationResult)
        at com.atomikos.icatch.imp.CoordinatorStateHandler.rollback(CoordinatorStateHandler.java:798)
        at com.atomikos.icatch.imp.ActiveStateHandler.rollback(ActiveStateHandler.java:347)
        at com.atomikos.icatch.imp.CoordinatorImp.rollback(CoordinatorImp.java:861)
        - locked <0x00007fbc6b223808> (a com.atomikos.finitestates.FSMImp)
        at com.atomikos.icatch.imp.TransactionStateHandler.rollback(TransactionStateHandler.java:171)
        at com.atomikos.icatch.imp.TransactionStateHandler.rollbackWithStateCheck(TransactionStateHandler.java:191)
        at com.atomikos.icatch.imp.CompositeTransactionImp.doRollback(CompositeTransactionImp.java:463)
        at com.atomikos.icatch.imp.CompositeTerminatorImp.rollback(CompositeTerminatorImp.java:183)
        at com.atomikos.icatch.jta.TransactionImp.rollback(TransactionImp.java:344)
        at com.atomikos.icatch.jta.TransactionManagerImp.rollback(TransactionManagerImp.java:636)
        at com.atomikos.icatch.jta.UserTransactionManager.rollback(UserTransactionManager.java:189)
        at com.atomikos.jms.extra.MessageConsumerSession$ReceiverThread.run(MessageConsumerSession.java:555)


and the next one is blocked:

"Thread-9" prio=10 tid=0x00007fbc580b1800 nid=0x7a50 waiting for monitor entry [0x00007fbc575d8000]
  java.lang.Thread.State: BLOCKED (on object monitor)
        at com.atomikos.icatch.imp.CoordinatorImp.dispose(CoordinatorImp.java:1086)
        - waiting to lock <0x00007fbc6b223808> (a com.atomikos.finitestates.FSMImp)
        at com.atomikos.icatch.imp.TransactionServiceImp.shutdown(TransactionServiceImp.java:910)
        - locked <0x00007fbc6aec90f8> (a com.atomikos.icatch.imp.TransactionServiceImp)
        at com.atomikos.icatch.standalone.StandAloneTransactionManager.shutdown(StandAloneTransactionManager.java:169)
        at com.atomikos.icatch.standalone.UserTransactionServiceImp.shutdown(UserTransactionServiceImp.java:364)
        at com.atomikos.icatch.config.UserTransactionServiceImp.shutdown(UserTransactionServiceImp.java:362)
        at com.atomikos.icatch.config.UserTransactionServiceImp.shutdownForce(UserTransactionServiceImp.java:527)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:273)
        at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:199)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:487)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:463)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:431)
        - locked <0x00007fbc6ad12a80> (a java.util.LinkedHashMap)
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1048)
        at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1022)
        at org.springframework.context.support.AbstractApplicationContext$3.run(AbstractApplicationContext.java:940)


Don't know how i got this - but this should not happen i guess.
The Result is waiting forever but the spring context is already in shutdown state, so i guess the missing reply won't get in.
The propagator thread is still there but its in waiting state:


"Atomikos:2" daemon prio=10 tid=0x0000000042b1f800 nid=0x7a3a waiting on condition [0x00007fbc5d0ac000]
  java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00007fbc6b21a128> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
        at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:317)
        at org.apache.activemq.transport.FutureResponse.getResult(FutureResponse.java:40)
        at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:87)
        at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1276)
        at org.apache.activemq.TransactionContext.syncSendPacketWithInterruptionHandling(TransactionContext.java:704)
        at org.apache.activemq.TransactionContext.rollback(TransactionContext.java:487)
        at com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:905)
        - locked <0x00007fbc6b22c280> (a com.atomikos.datasource.xa.XAResourceTransaction)
        at com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:90)
        at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:86)
        at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:62)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)


Any hints what to try? Is this a activemq bug or a bad timing issue on atomikos side? Any things i can do?
Torsten Krah Send private email
Monday, December 20, 2010
 
 
This does not happen with 5.3.1 of activemq - but with 5.4.2.
Maybe some regression at activemq side, i'll take a look there too and see what the guys there tell me about this.
Torsten Krah Send private email
Monday, December 20, 2010
 
 
OK thanks.
Guy Pardon Send private email
Wednesday, December 22, 2010
 
 

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

Other recent topics Other recent topics