activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chris <em...@christianhoffmann.info>
Subject contradictory patch of ConduitBridge for removing of subscriptions
Date Wed, 27 Oct 2010 13:14:33 GMT
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());
             }

Mime
View raw message