[
https://issues.apache.org/activemq/browse/AMQ-677?page=comments#action_36028 ]
Andrew Lusk commented on AMQ-677:
---------------------------------
The lines you added in r392929 throw an exception in the broker and crash my
ProducerTool on the first iteration, since producer advisory topics and
consumer advisory topics are unconditionally closed, when in the case of the
above attached code it doesn't create any producers on the temporary topic,
only consumers.
Please verify the fix on the above attached ProducerTool with -Dtopic=true and
-Dmax=10000. It has always very readily reproduced this problem.
INFO Service - Sync error occurred:
javax.jms.JMSException: Destination does not exist:
topic://ActiveMQ.Advisory.Producer.Topic.ID:andrewlu-33101-1144699546209-0:0:1
javax.jms.JMSException: Destination does not exist:
topic://ActiveMQ.Advisory.Producer.Topic.ID:andrewlu-33101-1144699546209-0:0:1
at
org.apache.activemq.broker.region.RegionBroker.removeDestination(RegionBroker.java:216)
at
org.apache.activemq.broker.BrokerFilter.removeDestination(BrokerFilter.java:129)
at
org.apache.activemq.advisory.AdvisoryBroker.removeDestinationInfo(AdvisoryBroker.java:180)
at
org.apache.activemq.broker.BrokerFilter.removeDestinationInfo(BrokerFilter.java:204)
at
org.apache.activemq.broker.MutableBrokerFilter.removeDestinationInfo(MutableBrokerFilter.java:214)
at
org.apache.activemq.broker.AbstractConnection.processRemoveDestination(AbstractConnection.java:376)
at
org.apache.activemq.command.DestinationInfo.visit(DestinationInfo.java:122)
at
org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:196)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62)
at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:93)
at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:70)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:114)
at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:87)
at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:139)
at java.lang.Thread.run(Thread.java:595)
> ActiveMQ broker leaks advisory topics
> -------------------------------------
>
> Key: AMQ-677
> URL: https://issues.apache.org/activemq/browse/AMQ-677
> Project: ActiveMQ
> Type: Bug
> Components: Broker
> Environment: linux, near-trunk version of ActiveMQ
> Reporter: Andrew Lusk
> Assignee: Rob Davies
> Fix For: 4.0 RC3
> Attachments: ProducerTool.java
>
>
> When I run the attached code, which AFAIK is completely legal JMS, the
> ActiveMQ broker grows to 500+ mb and crashes due to being out of heap space.
> Some investigation with hprof has lead me to believe that the advisory topics
> created by the MessageConsumers (and Producers, but I use the same producer
> each time so that's not causing a problem) are being put into a
> DestinationMap and not being removed.
> The rough origin of this is in the addProducer call in AdvisoryBroker, which
> creates the advisory topic.
> Note that this memory is not freed when the DestinationInfo removing the
> original temptopic is received, nor when the actual client exits. The object
> lifetime of these advisory destinations seems very poorly defined. If they
> are implicitly created by the server, they should be implicitly destroyed by
> the same.
> To reproduce, I've been running this code with -Dtopic=true and -Dmax=10000
> (though the problem shows up well before this amount). This is just a
> modified version of the example ProducerTool (note it doesn't actually send
> any messages).
> Please verify the correctness of the attached code.
> Andrew Lusk
--
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