activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simon Cox (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQ-2618) systemUsage tempUsage limit causes broker to lock up when using permanent queue with persistent messages
Date Fri, 16 Apr 2010 12:52:27 GMT

    [ https://issues.apache.org/activemq/browse/AMQ-2618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=58905#action_58905
] 

Simon Cox commented on AMQ-2618:
--------------------------------

We've noticed a similar issue to this, but without persistent messages.  Persistence is enabled
in the broker, but all messages are sent specifying NON_PERSISTENT.  The hanging thread in
the broker looks like:

  "ActiveMQ Transport: tcp:///10.66.1.23:8385" daemon prio=10 tid=0x00000000516aec00 nid=0x7f97
in Object.wait() [0x000000004d263000..0x000000004d263b10]
     java.lang.Thread.State: TIMED_WAITING (on object monitor)
          at java.lang.Object.wait(Native Method)
          at org.apache.activemq.usage.Usage.waitForSpace(Usage.java:99)
          - locked <0x00002aaab3912640> (a java.lang.Object)
          at org.apache.activemq.usage.Usage.waitForSpace(Usage.java:77)
          at org.apache.activemq.broker.region.cursors.FilePendingMessageCursor.addMessageLast(FilePendingMessageCursor.java:194)
          - locked <0x00002aaab41ac8f8> (a org.apache.activemq.broker.region.cursors.FilePendingMessageCursor)
          at org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor.addMessageLast(StoreDurableSubscriberCursor.java:169)
          - locked <0x00002aaab41ac3e8> (a org.apache.activemq.broker.region.cursors.StoreDurableSubscriberCursor)
          at org.apache.activemq.broker.region.PrefetchSubscription.add(PrefetchSubscription.java:156)
          - locked <0x00002aaab41acb80> (a java.lang.Object)
          at org.apache.activemq.broker.region.DurableTopicSubscription.add(DurableTopicSubscription.java:199)
          at org.apache.activemq.broker.region.policy.SimpleDispatchPolicy.dispatch(SimpleDispatchPolicy.java:49)
          - locked <0x00002aaab41abe80> (a java.util.concurrent.CopyOnWriteArrayList)
          at org.apache.activemq.broker.region.Topic.dispatch(Topic.java:588)
          at org.apache.activemq.broker.region.Topic.doMessageSend(Topic.java:442)
          - locked <0x00002aaab41aae18> (a org.apache.activemq.broker.region.Topic)
          at org.apache.activemq.broker.region.Topic.send(Topic.java:376)
          at org.apache.activemq.broker.region.AbstractRegion.send(AbstractRegion.java:354)
          at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:445)
          at org.apache.activemq.broker.TransactionBroker.send(TransactionBroker.java:224)
          at org.apache.activemq.broker.BrokerFilter.send(BrokerFilter.java:126)
          at org.apache.activemq.broker.CompositeDestinationBroker.send(CompositeDestinationBroker.java:95)
          at org.apache.activemq.broker.MutableBrokerFilter.send(MutableBrokerFilter.java:133)
          at org.apache.activemq.broker.TransportConnection.processMessage(TransportConnection.java:443)
          at org.apache.activemq.command.ActiveMQMessage.visit(ActiveMQMessage.java:631)
          at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:297)
          at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:175)
          at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
          at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
          at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:210)
          - locked <0x00002aaab41e21d0> (a org.apache.activemq.transport.InactivityMonitor$1)
          at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
          at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:203)
          at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:185)
          at java.lang.Thread.run(Thread.java:619)

In this state, no new connections to the broker can be established, and no messages can be
sent on existing connections.

We're on 5.3.0.  For the time being we've disabled persistence (setting adding persistent="false"
to the broker element in the broker config).  We're not sure if this has stopped the hanging
yet.

Thanks,
Simon

> systemUsage tempUsage limit causes broker to lock up when using permanent queue with
persistent messages
> --------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2618
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2618
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.3.0
>            Reporter: Mats Henrikson
>            Assignee: Gary Tully
>         Attachments: UnlimitedEnqueueTest.java
>
>
> It is possible to hang the broker when setting a systemUsage tempUsage limit with permanent
queues and persistent messages.
> I have attached a test class that demonstrates the problem. I got the test case from
AMQ-2610 and have essentially only added the line:
> {code}
> brokerService.getSystemUsage().getTempUsage().setLimit(10 * 1024 * 1024);
> {code}
> When that line is in the code the test case hangs after 995 messages, when the line is
commented out it runs probably until it runs out of disk space.
> When the broker hangs a ctrl+C is not enough to shut it down, when connecting over JMX
with JConsole the queue being used in the test will not render its attributes, you can't connect
with another consumer or producer etc.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message