[
https://issues.apache.org/jira/browse/AMQCPP-510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish updated AMQCPP-510:
--------------------------------
Fix Version/s: (was: 3.8.1)
> Consumer leaks memory with failover and checkForDuplicates=true
> ---------------------------------------------------------------
>
> Key: AMQCPP-510
> URL: https://issues.apache.org/jira/browse/AMQCPP-510
> Project: ActiveMQ C++ Client
> Issue Type: Bug
> Components: CMS Impl
> Affects Versions: 3.7.0, 3.7.1, 3.8.0
> Environment: Linux x86/64 (ubuntu)
> Reporter: Sam Parsons
> Assignee: Timothy Bish
> Fix For: 3.9.0
>
>
> The example application (examples/main.cpp) leaks memory in the consumer.
> To reproduce the problem, add a usleep(100000) after the producer->send, set
> useTopics = false and numMessages = 2000000.
> With the following url, the example application remains on 4% CPU and 15 meg
> of memory on my development machine:
> "failover:(tcp://localhost:61616)?connection.checkForDuplicates=false"
> Without the "checkForDuplicates=false" the cpu and memory usage grows
> constantly. I eventually stopped it at 100% CPU and 340 meg of memory.
> Valgrind suggested that the leak was in ConnectionAudit.cpp:100. I added the
> following debug:
> {noformat}
> try {
> audit = this->impl->destinations.get(destination);
> } catch (NoSuchElementException& ex) {
> audit.reset(new
> ActiveMQMessageAudit(auditDepth,auditMaximumProducerNumber));
> this->impl->destinations.put(destination, audit);
> std::cout << "New destination audit: " << destination->toString()
> << ", size: " << this->impl->destinations.keySet().size() <<
> std::endl;
> }
> {noformat}
> ...and it prints...
> {noformat}
> Sent message #410 from thread 140736021874568
> New destination audit: queue://TEST.FOO, size: 410
> Message #410 Received: Hello world! from thread 140736021874568
> Sent message #411 from thread 140736021874568
> New destination audit: queue://TEST.FOO, size: 411
> Message #411 Received: Hello world! from thread 140736021874568
> {noformat}
> So the size of the destinations map keeps increasing. It seems to think every
> message has a new destination, but this is not the case. It's just the
> example code in main.cpp which creates the TEST.FOO destination and sends
> messages to it in a loop.
> I tested 3.7.0, 3.7.1 and 3.8.0 and the problem is in all of these versions.
> 3.4.4 does not have this problem, but that version does not have duplicates
> detection so that's probably why.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira