You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by drvillo <f....@gmail.com> on 2006/12/23 11:44:56 UTC

Another deadlock showing up

Hi all

This one happens systematically after a while I run my service (not during
an isolated test).
I have still to figure out if I can reproduce it with a stub.
Anyway it always appear to be the same.

The only thing that I find relevant in the logs is that at some point the
broker seems to be unreachable a moment,
but after that clients reconnect and everything goes on normally.
I have attached an excerpt of the log to make things clearer.
http://www.nabble.com/file/5096/deadlock.log deadlock.log 

I'm using an embedded broker, over tcp and connecting through 
tcp://localhost:61617?jms.dispatchAsync=true&amp;jms.dispatchAsync=true


with ActiveMQ-4.2-incubator-SNAPSHOT.
I'm pretty sure this wasn't happening with 4.0.1

I hope someone can help me on this, right now I'm pretty much stuck.

Thanks everybody, and merry christmas!
Francesco


Found one Java-level deadlock:
=============================
"ActiveMQ Task":
  waiting to lock monitor 0x080e4f3c (object 0x92b60db0, a
java.util.LinkedList),
  which is held by "ActiveMQ Transport: tcp:///127.0.0.1:37496"
"ActiveMQ Transport: tcp:///127.0.0.1:37496":
  waiting to lock monitor 0x080e4f7c (object 0x92b60d98, a
org.apache.activemq.broker.region.cursors.VMPendingMessageCursor),
  which is held by "ActiveMQ Task"

Java stack information for the threads listed above:
===================================================
"ActiveMQ Task":
        at
org.apache.activemq.broker.region.PrefetchSubscription.dispatch(PrefetchSubscription.java:414)
        - waiting to lock <0x92b60db0> (a java.util.LinkedList)
        at
org.apache.activemq.broker.region.QueueSubscription.dispatch(QueueSubscription.java:172)
        at
org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatched(PrefetchSubscription.java:397)
        - locked <0x92b60d98> (a
org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
        at
org.apache.activemq.broker.region.PrefetchSubscription.onDispatch(PrefetchSubscription.java:451)
        at
org.apache.activemq.broker.region.QueueSubscription.onDispatch(QueueSubscription.java:192)
        at
org.apache.activemq.broker.region.PrefetchSubscription$3.run(PrefetchSubscription.java:429)
        at
org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:778)
        at
org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:791)
        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
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
"ActiveMQ Transport: tcp:///127.0.0.1:37496":
        at
org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatched(PrefetchSubscription.java:383)
        - waiting to lock <0x92b60d98> (a
org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
        at
org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:219)
        - locked <0x92b60db0> (a java.util.LinkedList)
        at
org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:299)
        at
org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:397)
        at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:177)
        at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
        at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
        at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:88)
        at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:491)
        at org.apache.activemq.command.MessageAck.visit(MessageAck.java:179)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:287)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:178)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
        at java.lang.Thread.run(Thread.java:595)

Found 1 deadlock.




-- 
View this message in context: http://www.nabble.com/Another-deadlock-showing-up-tf2874106.html#a8033006
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: Another deadlock showing up

Posted by Rob Davies <ra...@gmail.com>.
Hi Francesco,

http://issues.apache.org/activemq/browse/AMQ-1108 is now fixed in SVN  
trunk

cheers,

Rob
On 23 Dec 2006, at 18:41, drvillo wrote:

>
> If it can help, it happens when a consumer start sending a pretty
> high volume of messages (~100k) back into the beginning of a
> pipelined system, i.e there is recursion of still uncommitted  
> transaction.
>
> Cheers
> Francesco
>
>
> rajdavies wrote:
>>
>> I've created a jira issue for this:  http://issues.apache.org/
>> activemq/browse/AMQ-1108
>>
>> cheers,
>>
>> Rob
>> On 23 Dec 2006, at 10:44, drvillo wrote:
>>
>>> Found one Java-level deadlock:
>>> =============================
>>> "ActiveMQ Task":
>>>   waiting to lock monitor 0x080e4f3c (object 0x92b60db0, a
>>> java.util.LinkedList),
>>>   which is held by "ActiveMQ Transport: tcp:///127.0.0.1:37496"
>>> "ActiveMQ Transport: tcp:///127.0.0.1:37496":
>>>   waiting to lock monitor 0x080e4f7c (object 0x92b60d98, a
>>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor),
>>>   which is held by "ActiveMQ Task"
>>>
>>> Java stack information for the threads listed above:
>>> ===================================================
>>> "ActiveMQ Task":
>>>         at
>>> org.apache.activemq.broker.region.PrefetchSubscription.dispatch
>>> (PrefetchSubscription.java:414)
>>>         - waiting to lock <0x92b60db0> (a java.util.LinkedList)
>>>         at
>>> org.apache.activemq.broker.region.QueueSubscription.dispatch
>>> (QueueSubscription.java:172)
>>>         at
>>> org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatch 
>>> ed
>>> (PrefetchSubscription.java:397)
>>>         - locked <0x92b60d98> (a
>>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>>>         at
>>> org.apache.activemq.broker.region.PrefetchSubscription.onDispatch
>>> (PrefetchSubscription.java:451)
>>>         at
>>> org.apache.activemq.broker.region.QueueSubscription.onDispatch
>>> (QueueSubscription.java:192)
>>>         at
>>> org.apache.activemq.broker.region.PrefetchSubscription$3.run
>>> (PrefetchSubscription.java:429)
>>>         at
>>> org.apache.activemq.broker.TransportConnection.processDispatch
>>> (TransportConnection.java:778)
>>>         at
>>> org.apache.activemq.broker.TransportConnection.iterate
>>> (TransportConnection.java:791)
>>>         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
>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask
>>> (ThreadPoolExecutor.java:650)
>>>         at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run
>>> (ThreadPoolExecutor.java:675)
>>>         at java.lang.Thread.run(Thread.java:595)
>>> "ActiveMQ Transport: tcp:///127.0.0.1:37496":
>>>         at
>>> org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatch 
>>> ed
>>> (PrefetchSubscription.java:383)
>>>         - waiting to lock <0x92b60d98> (a
>>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>>>         at
>>> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge
>>> (PrefetchSubscription.java:219)
>>>         - locked <0x92b60db0> (a java.util.LinkedList)
>>>         at
>>> org.apache.activemq.broker.region.AbstractRegion.acknowledge
>>> (AbstractRegion.java:299)
>>>         at
>>> org.apache.activemq.broker.region.RegionBroker.acknowledge
>>> (RegionBroker.java:397)
>>>         at
>>> org.apache.activemq.broker.TransactionBroker.acknowledge
>>> (TransactionBroker.java:177)
>>>         at
>>> org.apache.activemq.broker.BrokerFilter.acknowledge
>>> (BrokerFilter.java:74)
>>>         at
>>> org.apache.activemq.broker.BrokerFilter.acknowledge
>>> (BrokerFilter.java:74)
>>>         at
>>> org.apache.activemq.broker.MutableBrokerFilter.acknowledge
>>> (MutableBrokerFilter.java:88)
>>>         at
>>> org.apache.activemq.broker.TransportConnection.processMessageAck
>>> (TransportConnection.java:491)
>>>         at org.apache.activemq.command.MessageAck.visit
>>> (MessageAck.java:179)
>>>         at
>>> org.apache.activemq.broker.TransportConnection.service
>>> (TransportConnection.java:287)
>>>         at
>>> org.apache.activemq.broker.TransportConnection$1.onCommand
>>> (TransportConnection.java:178)
>>>         at
>>> org.apache.activemq.transport.TransportFilter.onCommand
>>> (TransportFilter.java:65)
>>>         at
>>> org.apache.activemq.transport.WireFormatNegotiator.onCommand
>>> (WireFormatNegotiator.java:133)
>>>         at
>>> org.apache.activemq.transport.InactivityMonitor.onCommand
>>> (InactivityMonitor.java:122)
>>>         at
>>> org.apache.activemq.transport.TransportSupport.doConsume
>>> (TransportSupport.java:84)
>>>         at
>>> org.apache.activemq.transport.tcp.TcpTransport.run
>>> (TcpTransport.java:137)
>>>         at java.lang.Thread.run(Thread.java:595)
>>>
>>> Found 1 deadlock.
>>>
>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/Another- 
> deadlock-showing-up-tf2874106.html#a8035799
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>


Re: Another deadlock showing up

Posted by drvillo <f....@gmail.com>.
If it can help, it happens when a consumer start sending a pretty 
high volume of messages (~100k) back into the beginning of a 
pipelined system, i.e there is recursion of still uncommitted transaction.

Cheers
Francesco


rajdavies wrote:
> 
> I've created a jira issue for this:  http://issues.apache.org/ 
> activemq/browse/AMQ-1108
> 
> cheers,
> 
> Rob
> On 23 Dec 2006, at 10:44, drvillo wrote:
> 
>> Found one Java-level deadlock:
>> =============================
>> "ActiveMQ Task":
>>   waiting to lock monitor 0x080e4f3c (object 0x92b60db0, a
>> java.util.LinkedList),
>>   which is held by "ActiveMQ Transport: tcp:///127.0.0.1:37496"
>> "ActiveMQ Transport: tcp:///127.0.0.1:37496":
>>   waiting to lock monitor 0x080e4f7c (object 0x92b60d98, a
>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor),
>>   which is held by "ActiveMQ Task"
>>
>> Java stack information for the threads listed above:
>> ===================================================
>> "ActiveMQ Task":
>>         at
>> org.apache.activemq.broker.region.PrefetchSubscription.dispatch 
>> (PrefetchSubscription.java:414)
>>         - waiting to lock <0x92b60db0> (a java.util.LinkedList)
>>         at
>> org.apache.activemq.broker.region.QueueSubscription.dispatch 
>> (QueueSubscription.java:172)
>>         at
>> org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatched 
>> (PrefetchSubscription.java:397)
>>         - locked <0x92b60d98> (a
>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>>         at
>> org.apache.activemq.broker.region.PrefetchSubscription.onDispatch 
>> (PrefetchSubscription.java:451)
>>         at
>> org.apache.activemq.broker.region.QueueSubscription.onDispatch 
>> (QueueSubscription.java:192)
>>         at
>> org.apache.activemq.broker.region.PrefetchSubscription$3.run 
>> (PrefetchSubscription.java:429)
>>         at
>> org.apache.activemq.broker.TransportConnection.processDispatch 
>> (TransportConnection.java:778)
>>         at
>> org.apache.activemq.broker.TransportConnection.iterate 
>> (TransportConnection.java:791)
>>         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
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask 
>> (ThreadPoolExecutor.java:650)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run 
>> (ThreadPoolExecutor.java:675)
>>         at java.lang.Thread.run(Thread.java:595)
>> "ActiveMQ Transport: tcp:///127.0.0.1:37496":
>>         at
>> org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatched 
>> (PrefetchSubscription.java:383)
>>         - waiting to lock <0x92b60d98> (a
>> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>>         at
>> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge 
>> (PrefetchSubscription.java:219)
>>         - locked <0x92b60db0> (a java.util.LinkedList)
>>         at
>> org.apache.activemq.broker.region.AbstractRegion.acknowledge 
>> (AbstractRegion.java:299)
>>         at
>> org.apache.activemq.broker.region.RegionBroker.acknowledge 
>> (RegionBroker.java:397)
>>         at
>> org.apache.activemq.broker.TransactionBroker.acknowledge 
>> (TransactionBroker.java:177)
>>         at
>> org.apache.activemq.broker.BrokerFilter.acknowledge 
>> (BrokerFilter.java:74)
>>         at
>> org.apache.activemq.broker.BrokerFilter.acknowledge 
>> (BrokerFilter.java:74)
>>         at
>> org.apache.activemq.broker.MutableBrokerFilter.acknowledge 
>> (MutableBrokerFilter.java:88)
>>         at
>> org.apache.activemq.broker.TransportConnection.processMessageAck 
>> (TransportConnection.java:491)
>>         at org.apache.activemq.command.MessageAck.visit 
>> (MessageAck.java:179)
>>         at
>> org.apache.activemq.broker.TransportConnection.service 
>> (TransportConnection.java:287)
>>         at
>> org.apache.activemq.broker.TransportConnection$1.onCommand 
>> (TransportConnection.java:178)
>>         at
>> org.apache.activemq.transport.TransportFilter.onCommand 
>> (TransportFilter.java:65)
>>         at
>> org.apache.activemq.transport.WireFormatNegotiator.onCommand 
>> (WireFormatNegotiator.java:133)
>>         at
>> org.apache.activemq.transport.InactivityMonitor.onCommand 
>> (InactivityMonitor.java:122)
>>         at
>> org.apache.activemq.transport.TransportSupport.doConsume 
>> (TransportSupport.java:84)
>>         at
>> org.apache.activemq.transport.tcp.TcpTransport.run 
>> (TcpTransport.java:137)
>>         at java.lang.Thread.run(Thread.java:595)
>>
>> Found 1 deadlock.
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Another-deadlock-showing-up-tf2874106.html#a8035799
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: Another deadlock showing up

Posted by Rob Davies <ra...@gmail.com>.
I've created a jira issue for this:  http://issues.apache.org/ 
activemq/browse/AMQ-1108

cheers,

Rob
On 23 Dec 2006, at 10:44, drvillo wrote:

> Found one Java-level deadlock:
> =============================
> "ActiveMQ Task":
>   waiting to lock monitor 0x080e4f3c (object 0x92b60db0, a
> java.util.LinkedList),
>   which is held by "ActiveMQ Transport: tcp:///127.0.0.1:37496"
> "ActiveMQ Transport: tcp:///127.0.0.1:37496":
>   waiting to lock monitor 0x080e4f7c (object 0x92b60d98, a
> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor),
>   which is held by "ActiveMQ Task"
>
> Java stack information for the threads listed above:
> ===================================================
> "ActiveMQ Task":
>         at
> org.apache.activemq.broker.region.PrefetchSubscription.dispatch 
> (PrefetchSubscription.java:414)
>         - waiting to lock <0x92b60db0> (a java.util.LinkedList)
>         at
> org.apache.activemq.broker.region.QueueSubscription.dispatch 
> (QueueSubscription.java:172)
>         at
> org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatched 
> (PrefetchSubscription.java:397)
>         - locked <0x92b60d98> (a
> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>         at
> org.apache.activemq.broker.region.PrefetchSubscription.onDispatch 
> (PrefetchSubscription.java:451)
>         at
> org.apache.activemq.broker.region.QueueSubscription.onDispatch 
> (QueueSubscription.java:192)
>         at
> org.apache.activemq.broker.region.PrefetchSubscription$3.run 
> (PrefetchSubscription.java:429)
>         at
> org.apache.activemq.broker.TransportConnection.processDispatch 
> (TransportConnection.java:778)
>         at
> org.apache.activemq.broker.TransportConnection.iterate 
> (TransportConnection.java:791)
>         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
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask 
> (ThreadPoolExecutor.java:650)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> "ActiveMQ Transport: tcp:///127.0.0.1:37496":
>         at
> org.apache.activemq.broker.region.PrefetchSubscription.dispatchMatched 
> (PrefetchSubscription.java:383)
>         - waiting to lock <0x92b60d98> (a
> org.apache.activemq.broker.region.cursors.VMPendingMessageCursor)
>         at
> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge 
> (PrefetchSubscription.java:219)
>         - locked <0x92b60db0> (a java.util.LinkedList)
>         at
> org.apache.activemq.broker.region.AbstractRegion.acknowledge 
> (AbstractRegion.java:299)
>         at
> org.apache.activemq.broker.region.RegionBroker.acknowledge 
> (RegionBroker.java:397)
>         at
> org.apache.activemq.broker.TransactionBroker.acknowledge 
> (TransactionBroker.java:177)
>         at
> org.apache.activemq.broker.BrokerFilter.acknowledge 
> (BrokerFilter.java:74)
>         at
> org.apache.activemq.broker.BrokerFilter.acknowledge 
> (BrokerFilter.java:74)
>         at
> org.apache.activemq.broker.MutableBrokerFilter.acknowledge 
> (MutableBrokerFilter.java:88)
>         at
> org.apache.activemq.broker.TransportConnection.processMessageAck 
> (TransportConnection.java:491)
>         at org.apache.activemq.command.MessageAck.visit 
> (MessageAck.java:179)
>         at
> org.apache.activemq.broker.TransportConnection.service 
> (TransportConnection.java:287)
>         at
> org.apache.activemq.broker.TransportConnection$1.onCommand 
> (TransportConnection.java:178)
>         at
> org.apache.activemq.transport.TransportFilter.onCommand 
> (TransportFilter.java:65)
>         at
> org.apache.activemq.transport.WireFormatNegotiator.onCommand 
> (WireFormatNegotiator.java:133)
>         at
> org.apache.activemq.transport.InactivityMonitor.onCommand 
> (InactivityMonitor.java:122)
>         at
> org.apache.activemq.transport.TransportSupport.doConsume 
> (TransportSupport.java:84)
>         at
> org.apache.activemq.transport.tcp.TcpTransport.run 
> (TcpTransport.java:137)
>         at java.lang.Thread.run(Thread.java:595)
>
> Found 1 deadlock.
>