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());
             }

Reply via email to