[ 
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

        

Reply via email to