Hi,
I have got an deadlock situation in MutexTransport. The usecase is that I
have a broker, producer and consumer all deployed in separate WARs and the
communicate over vm:// transport. I have a servelt which creates the
producer which produces two messages to the same topic, but with different
message selectors for two consumers. I maybe should mention that i have a
lingo, jencks, spring combo setup...
Here's the threaddump from the deadlock
Found one Java-level deadlock:
=============================
"Thread-44":
waiting to lock monitor 0x00a6b29c (object 0x234e2f48, a
java.lang.Object),
which is held by "http-8080-Processor21"
"http-8080-Processor21":
waiting to lock monitor 0x00a6afbc (object 0x23508c88, a
java.lang.Object),
which is held by "Thread-44"
Java stack information for the threads listed above:
===================================================
"Thread-44":
at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:45)
- waiting to lock <0x234e2f48> (a java.lang.Object)
at
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:59)
at
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:215)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:63)
at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:92)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:67)
at
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:77)
at
org.apache.activemq.transport.MarshallingTransportFilter.oneway(MarshallingTransportFilter.java:37)
at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:45)
- locked <0x23508c88> (a java.lang.Object)
at
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:67)
at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:72)
at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1115)
at
org.apache.activemq.TransactionContext.commit(TransactionContext.java:260)
at
org.apache.activemq.ra.LocalAndXATransaction.commit(LocalAndXATransaction.java:57)
at
org.jencks.LocalTransactionEndpoint.afterDelivery(LocalTransactionEndpoint.java:52)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:130)
at
org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:64)
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:214)
at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:752)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:163)
- locked <0x237b68b0> (a org.apache.activemq.ra.ServerSessionImpl)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)
"http-8080-Processor21":
at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:45)
- waiting to lock <0x23508c88> (a java.lang.Object)
at
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:59)
at
org.apache.activemq.ActiveMQConnection.asyncSendPacket(ActiveMQConnection.java:1095)
at
org.apache.activemq.ActiveMQSession.<init>(ActiveMQSession.java:228)
at
org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:275)
at
org.apache.activemq.ra.ServerSessionPoolImpl.createServerSessionImpl(ServerSessionPoolImpl.java:60)
at
org.apache.activemq.ra.ServerSessionPoolImpl.getServerSession(ServerSessionPoolImpl.java:112)
- locked <0x234dc7a0> (a
org.apache.activemq.ra.ServerSessionPoolImpl)
at
org.apache.activemq.ActiveMQConnectionConsumer.dispatch(ActiveMQConnectionConsumer.java:136)
at
org.apache.activemq.ActiveMQConnection.onCommand(ActiveMQConnection.java:1407)
at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:92)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:67)
at
org.apache.activemq.transport.MarshallingTransportFilter.onCommand(MarshallingTransportFilter.java:42)
at
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:77)
at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:45)
- locked <0x234e2f48> (a java.lang.Object)
at
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:59)
at
org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:215)
at
org.apache.activemq.broker.AbstractConnection.processDispatch(AbstractConnection.java:722)
at
org.apache.activemq.broker.AbstractConnection.dispatchSync(AbstractConnection.java:699)
at
org.apache.activemq.broker.region.TopicSubscription.dispatch(TopicSubscription.java:319)
at
org.apache.activemq.broker.region.TopicSubscription.add(TopicSubscription.java:78)
at
org.apache.activemq.broker.region.policy.SimpleDispatchPolicy.dispatch(SimpleDispatchPolicy.java:51)
at org.apache.activemq.broker.region.Topic.dispatch(Topic.java:444)
at org.apache.activemq.broker.region.Topic.send(Topic.java:255)
at
org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:226)
at
org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:349)
at
org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:193)
at
org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:114)
at
org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:98)
at
org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:127)
at
org.apache.activemq.broker.AbstractConnection.processMessage(AbstractConnection.java:433)
at
org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:591)
at
org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:237)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:61)
at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:92)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:67)
at
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:77)
at
org.apache.activemq.transport.MarshallingTransportFilter.oneway(MarshallingTransportFilter.java:37)
at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:45)
- locked <0x236fe2d8> (a java.lang.Object)
at
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:67)
at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:72)
at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1115)
at
org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1557)
at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:463)
at
org.logicblaze.lingo.jms.impl.OneWayRequestor.doSend(OneWayRequestor.java:196)
at
org.logicblaze.lingo.jms.impl.MultiplexingRequestor.doSend(MultiplexingRequestor.java:189)
- locked <0x236fe448> (a
org.logicblaze.lingo.jms.impl.MultiplexingRequestor)
at
org.logicblaze.lingo.jms.impl.OneWayRequestor.send(OneWayRequestor.java:101)
at
org.logicblaze.lingo.jms.impl.OneWayRequestor.send(OneWayRequestor.java:97)
at
org.logicblaze.lingo.jms.JmsClientInterceptor.invoke(JmsClientInterceptor.java:133)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy2.test(Unknown Source)
at se.ericsson.producer.LingoServlet.doGet(LingoServlet.java:33)
- locked <0x231d9c70> (a
se.ericsson.consumer.service.ConsumerServiceFactory)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Found 1 deadlock.
Is my setup incorrect in some way or is this a real problem that i found?
Thanks,
-Kristoffer
--
View this message in context:
http://www.nabble.com/Deadlock-in-MutexTransport-tf2490020.html#a6942040
Sent from the ActiveMQ - User mailing list archive at Nabble.com.