As you're using the vm://transport - you could set the async flag =
true - which will cure this problem - e.g. your connection url would
be vm://localhost?async=true
cheers,
Rob
On 15 Dec 2006, at 16:41, drvillo wrote:
>
> Hi there
>
> I have spent the whole day now tracking down this, and I have no clue.
> I have stripped everything down to a silly system:
> sender1->queue1->listener1->sender2->queue2->listener2
>
>
> I have a test that basically sends 10 messages with sender1, no more.
>
> The listeners are just logging the incoming messages, and listener1
> has
> a sender himself, to resend the same message to the second queue.
>
>
> Actually the situation is the following
> -sometimes I don't manage to send all the messages, because of a
> deadlock
> (given below)
> -sometimes I get no deadlocks but I loose a message (always the
> second) (and
> from
> the jconsole I can see that there's a message stuck in the queue
> and not
> consumed)
> -sometimes it goes fine
>
>
> the deadlock is reported below, with the last logging information
> appeared
>
> DEBUG org.apache.activemq.broker.region.AbstractRegion - Removing
> consumer:
> ID:obimac.local-51149-1166199529487-2:2:-1:4
> DEBUG org.apache.activemq.ra.ServerSessionImpl:1 - run loop end
> DEBUG org.apache.activemq.ra.ServerSessionPoolImpl - Session
> returned to
> pool: ServerSessionImpl:1
> DEBUG org.apache.activemq.ra.ServerSessionImpl:1 - Run finished
> DEBUG org.apache.activemq.ra.ServerSessionImpl:1 - Work completed:
> javax.resource.spi.work.WorkEvent[source=Work :ServerSessionImpl:1]
> DEBUG org.apache.activemq.ra.ServerSessionPoolImpl - ServerSession
> requested.
>
>
> ...
>
> Found one Java-level deadlock:
> =============================
> "ActiveMQ Task":
> waiting to lock monitor 0x018123fc (object 0x26b8fa00, a
> java.lang.Object),
> which is held by "Thread-3"
> "Thread-3":
> waiting to lock monitor 0x018123d8 (object 0x26b8e848, a
> java.lang.Object),
> which is held by "ActiveMQ Task"
>
> Java stack information for the threads listed above:
> ===================================================
> "ActiveMQ Task":
> at
> org.apache.activemq.transport.MutexTransport.oneway
> (MutexTransport.java:43)
> - waiting to lock <0x26b8fa00> (a java.lang.Object)
> at
> org.apache.activemq.transport.ResponseCorrelator.oneway
> (ResponseCorrelator.java:60)
> at
> org.apache.activemq.ActiveMQConnection.asyncSendPacket
> (ActiveMQConnection.java:1151)
> at org.apache.activemq.ActiveMQSession.<init>(ActiveMQSession.java:
> 226)
> at
> org.apache.activemq.ActiveMQConnection.createSession
> (ActiveMQConnection.java:277)
> at
> org.apache.activemq.ra.ServerSessionPoolImpl.createServerSessionImpl
> (ServerSessionPoolImpl.java:63)
> at
> org.apache.activemq.ra.ServerSessionPoolImpl.getServerSession
> (ServerSessionPoolImpl.java:116)
> at
> org.apache.activemq.ActiveMQConnectionConsumer.dispatch
> (ActiveMQConnectionConsumer.java:136)
> at
> org.apache.activemq.ActiveMQConnection.onCommand
> (ActiveMQConnection.java:1473)
> at
> org.apache.activemq.transport.ResponseCorrelator.onCommand
> (ResponseCorrelator.java:95)
> at
> org.apache.activemq.transport.TransportFilter.onCommand
> (TransportFilter.java:65)
> at
> org.apache.activemq.transport.vm.VMTransport.syncOneWay
> (VMTransport.java:96)
> at org.apache.activemq.transport.vm.VMTransport.oneway
> (VMTransport.java:83)
> at
> org.apache.activemq.transport.MutexTransport.oneway
> (MutexTransport.java:43)
> - locked <0x26b8e848> (a java.lang.Object)
> at
> org.apache.activemq.transport.ResponseCorrelator.oneway
> (ResponseCorrelator.java:60)
> at
> org.apache.activemq.broker.TransportConnection.dispatch
> (TransportConnection.java:1051)
> at
> org.apache.activemq.broker.TransportConnection.processDispatch
> (TransportConnection.java:772)
> at
> org.apache.activemq.broker.TransportConnection.iterate
> (TransportConnection.java:788)
> at
> org.apache.activemq.thread.PooledTaskRunner.runTask
> (PooledTaskRunner.java:111)
> at
> org.apache.activemq.thread.PooledTaskRunner.access$100
> (PooledTaskRunner.java:26)
> at
> org.apache.activemq.thread.PooledTaskRunner$1.run
> (PooledTaskRunner.java:44)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor
> $Worker.runTask(ThreadPoolExecutor.java:650)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor
> $Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:613)
> "Thread-3":
> at
> org.apache.activemq.transport.MutexTransport.oneway
> (MutexTransport.java:43)
> - waiting to lock <0x26b8e848> (a java.lang.Object)
> at
> org.apache.activemq.transport.ResponseCorrelator.oneway
> (ResponseCorrelator.java:60)
> at
> org.apache.activemq.broker.TransportConnection.dispatch
> (TransportConnection.java:1051)
> at
> org.apache.activemq.broker.TransportConnection$1.onCommand
> (TransportConnection.java:179)
> at
> org.apache.activemq.transport.ResponseCorrelator.onCommand
> (ResponseCorrelator.java:95)
> at
> org.apache.activemq.transport.TransportFilter.onCommand
> (TransportFilter.java:65)
> at
> org.apache.activemq.transport.vm.VMTransport.syncOneWay
> (VMTransport.java:96)
> at org.apache.activemq.transport.vm.VMTransport.oneway
> (VMTransport.java:83)
> at
> org.apache.activemq.transport.MutexTransport.oneway
> (MutexTransport.java:43)
> - locked <0x26b8fa00> (a java.lang.Object)
> at
> org.apache.activemq.transport.ResponseCorrelator.asyncRequest
> (ResponseCorrelator.java:69)
> at
> org.apache.activemq.transport.ResponseCorrelator.request
> (ResponseCorrelator.java:74)
> at
> org.apache.activemq.ActiveMQConnection.syncSendPacket
> (ActiveMQConnection.java:1171)
> at
> org.apache.activemq.TransactionContext.commit
> (TransactionContext.java:260)
> at
> org.apache.activemq.ra.LocalAndXATransaction.commit
> (LocalAndXATransaction.java:58)
> at
> org.jencks.LocalTransactionEndpoint.afterDelivery
> (LocalTransactionEndpoint.java:52)
> at
> org.apache.activemq.ra.MessageEndpointProxy
> $MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:126)
> at
> org.apache.activemq.ra.MessageEndpointProxy.afterDelivery
> (MessageEndpointProxy.java:65)
> at
> org.apache.activemq.ra.ServerSessionImpl.afterDelivery
> (ServerSessionImpl.java:216)
> at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:749)
> at org.apache.activemq.ra.ServerSessionImpl.run
> (ServerSessionImpl.java:165)
> 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:613)
>
> Found 1 deadlock.
>
>
> Attached there's my spring config file. I have been trying switching
> async dispatches and sends off, thinking that could have been the
> problem
> but that
> didn't help. turning off message persistence doesn't change
> anything either.
>
>
> Needless to say that the whole of this is pretty frustrating, in
> the last
> couple of days I have been
> dealing with deadlocks all over the place.
> I'm running AMC 4.1, jencks 1.3 spring 2.0.
>
> I hope someone will help on this, otherwise I'll probably have to
> drop the
> whole project:(
>
> thanks
> Francesco Vivoli
>
> http://www.nabble.com/file/4735/container.xml container.xml
> --
> View this message in context: http://www.nabble.com/Random-
> deadlocks-or-lost-messages-with-AMQ-4.1-and-Jencks-
> tf2828116.html#a7894874
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
|