Hi,
I noticed that in 5.3.2 the removal of a consumer in a network of
brokers sometimes triggers the removal of the network bridged
subscription even though there are still some other running consumers.
The problem was resolved in 5.4 with revision 949742 to handle
AMQ-2754. But looking at the code, this revision seems to undo a fix
for a memory leak that has been done earlier: revision 902009 for
AMQ-2530. I wonder if with the actual code, we're now back to the
situation where conduit bridge "works" but with memory leak.
Rgds,
Chris
PS:
The following patch for 5.3.2 might do the trick, but I guess this
needs some verification from someone who knows what this is supposed
to do:
---
a/activemq-core/src/main/java/org/apache/activemq/network/ConduitBridge.java
Mon
Oct 04 11:32:53 2010 +0200
+++
b/activemq-core/src/main/java/org/apache/activemq/network/ConduitBridge.java
Tue
Oct 26 18:56:17 2010 +0200
@@ -96,7 +96,6 @@
@Override
protected void removeDemandSubscription(ConsumerId id) throws
IOException {
- super.removeDemandSubscription(id);
List<DemandSubscription> tmpList = new
ArrayList<DemandSubscription>();
for (Iterator i =
subscriptionMapByLocalId.values().iterator(); i.hasNext();) {
@@ -112,7 +111,7 @@
}
for (Iterator<DemandSubscription> i = tmpList.iterator();
i.hasNext();) {
DemandSubscription ds = i.next();
- removeSubscription(ds);
+
super.removeDemandSubscription(ds.getRemoteInfo().getConsumerId());
if (LOG.isDebugEnabled()) {
LOG.debug(configuration.getBrokerName() + " removing
sub on " + localBroker + " from " + remoteBrokerName + " : " +
ds.getRemoteInfo());
}