Atomikos Forum |
|
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? |