You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/11/09 16:48:03 UTC

svn commit: r1199808 - in /camel/branches/camel-2.7.x: ./ components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java

Author: davsclaus
Date: Wed Nov  9 15:48:03 2011
New Revision: 1199808

URL: http://svn.apache.org/viewvc?rev=1199808&view=rev
Log:
CAMEL-2740: Fixed memory leak when doing request/reply over JMS with a fixed replyTo queue. Due correlationIDs in JMSMessage Selector not in sync with current active correlation ids.

Modified:
    camel/branches/camel-2.7.x/   (props changed)
    camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Nov  9 15:48:03 2011
@@ -1,2 +1,2 @@
-/camel/branches/camel-2.8.x:1170965,1171400,1174571,1175323,1176329,1176787,1177397,1177946,1177949,1180598,1187226,1189704,1199138,1199732,1199766
-/camel/trunk:1146608,1146903,1147216,1170956,1171396,1174565,1175321,1176274,1176781-1176782,1177394,1177945,1177948,1180597,1187221,1189693,1199137,1199703,1199739
+/camel/branches/camel-2.8.x:1170965,1171400,1174571,1175323,1176329,1176787,1177397,1177946,1177949,1180598,1187226,1189704,1199138,1199732,1199766,1199807
+/camel/trunk:1146608,1146903,1147216,1170956,1171396,1174565,1175321,1176274,1176781-1176782,1177394,1177945,1177948,1180597,1187221,1189693,1199137,1199703,1199739,1199804

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Nov  9 15:48:03 2011
@@ -1 +1 @@
-/camel/branches/camel-2.8.x:1-1146127,1146608,1146653,1146771,1146903,1147216,1170965-1171083,1171085-1171400,1174571,1175323,1176329,1176787,1177397,1177946,1177949,1180598,1187226,1189704,1199138,1199732,1199766
+/camel/branches/camel-2.8.x:1-1146127,1146608,1146653,1146771,1146903,1147216,1170965-1171083,1171085-1171400,1174571,1175323,1176329,1176787,1177397,1177946,1177949,1180598,1187226,1189704,1199138,1199732,1199766,1199807

Modified: camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java?rev=1199808&r1=1199807&r2=1199808&view=diff
==============================================================================
--- camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java (original)
+++ camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java Wed Nov  9 15:48:03 2011
@@ -16,8 +16,7 @@
  */
 package org.apache.camel.component.jms.reply;
 
-import java.util.LinkedHashSet;
-import java.util.Set;
+import java.util.concurrent.ConcurrentSkipListSet;
 
 /**
  * A creator which can build the JMS message selector query string to use
@@ -25,7 +24,7 @@ import java.util.Set;
  */
 public class MessageSelectorCreator implements CorrelationListener {
     protected final CorrelationMap timeoutMap;
-    protected final Set<String> correlationIds;
+    protected final ConcurrentSkipListSet<String> correlationIds;
     protected boolean dirty = true;
     protected StringBuilder expression;
 
@@ -34,7 +33,8 @@ public class MessageSelectorCreator impl
         this.timeoutMap.setListener(this);
         // create local set of correlation ids, as its easier to keep track
         // using the listener so we can flag the dirty flag upon changes
-        this.correlationIds = new LinkedHashSet<String>();
+        // must support concurrent access
+        this.correlationIds = new ConcurrentSkipListSet<String>();
     }
 
     public synchronized String get() {
@@ -60,8 +60,10 @@ public class MessageSelectorCreator impl
             }
         }
 
+        String answer = expression.toString();
+
         dirty = false;
-        return expression.toString();
+        return answer;
     }
 
     public void onPut(String key) {