You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by cs...@apache.org on 2017/03/15 13:32:28 UTC

[1/2] cxf git commit: [CXF-5754] Make sure temp queues are closed

Repository: cxf
Updated Branches:
  refs/heads/3.0.x-fixes 5321861b2 -> 4d8d30f19


[CXF-5754] Make sure temp queues are closed


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/034fac66
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/034fac66
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/034fac66

Branch: refs/heads/3.0.x-fixes
Commit: 034fac66c7e42e240631059506a0668920f5b53a
Parents: 5321861
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Mar 15 10:25:34 2017 +0100
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Mar 15 14:04:14 2017 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/cxf/transport/jms/JMSConduit.java  | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/034fac66/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
----------------------------------------------------------------------
diff --git a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
index 485c27d..e6d6da2 100644
--- a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
+++ b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
@@ -218,14 +218,17 @@ public class JMSConduit extends AbstractConduit implements JMSExchangeSender, Me
                 correlationMap.put(correlationId, exchange);
             }
 
-            if (exchange.isSynchronous()) {
+            if (!exchange.isSynchronous()) {
+                return;
+            }
+
+            try {
                 if (useSyncReceive) {
                     // TODO Not sure if replyToDestination is correct here
                     javax.jms.Message replyMessage = JMSUtil.receive(session, replyToDestination,
                                                                      correlationId,
                                                                      jmsConfig.getReceiveTimeout(),
                                                                      jmsConfig.isPubSubNoLocal());
-                    correlationMap.remove(correlationId);
                     processReplyMessage(exchange, replyMessage);
                 } else {
                     try {
@@ -239,6 +242,8 @@ public class JMSConduit extends AbstractConduit implements JMSExchangeSender, Me
                     }
 
                 }
+            } finally {
+                correlationMap.remove(correlationId);
             }
         }
     }


[2/2] cxf git commit: Move getting exchange into a method

Posted by cs...@apache.org.
Move getting exchange into a method


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/4d8d30f1
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/4d8d30f1
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/4d8d30f1

Branch: refs/heads/3.0.x-fixes
Commit: 4d8d30f1986236e7bd2b97ec442658d20e63d37b
Parents: 034fac6
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Wed Mar 15 10:48:57 2017 +0100
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Wed Mar 15 14:04:25 2017 +0100

----------------------------------------------------------------------
 .../apache/cxf/transport/jms/JMSConduit.java    | 42 +++++++++++++-------
 1 file changed, 27 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/4d8d30f1/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
----------------------------------------------------------------------
diff --git a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
index e6d6da2..34122ec 100644
--- a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
+++ b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
@@ -367,31 +367,43 @@ public class JMSConduit extends AbstractConduit implements JMSExchangeSender, Me
             String correlationId = jmsMessage.getJMSCorrelationID();
             LOG.log(Level.FINE, "Received reply message with correlation id " + correlationId);
 
-            // Try to correlate the incoming message with some timeout as it may have been
-            // added to the map after the message was sent
-            int count = 0;
-            Exchange exchange = null;
-            while (exchange == null && count < 100) {
-                exchange = correlationMap.remove(correlationId);
-                if (exchange == null) {
-                    Thread.sleep(1);
-                }
-                count++;
-            }
+            Exchange exchange = getExchange(correlationId);
             if (exchange == null) {
                 LOG.log(Level.WARNING, "Could not correlate message with correlationId " + correlationId);
-                return;
+            } else {
+                processReplyMessage(exchange, jmsMessage);
             }
-            processReplyMessage(exchange, jmsMessage);
         } catch (JMSException e) {
             throw JMSUtil.convertJmsException(e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException("Interrupted while correlating", e);
         }
 
     }
 
     /**
+     *  Try to correlate the incoming message with some timeout as it may have been
+     *  added to the map after the message was sent
+     *  
+     * @param correlationId
+     * @return exchange for correlationId or null if none was found
+     */
+    private Exchange getExchange(String correlationId) {
+        int count = 0;
+        Exchange exchange = null;
+        while (exchange == null && count < 100) {
+            exchange = correlationMap.remove(correlationId);
+            if (exchange == null) {
+                try {
+                    Thread.sleep(1);
+                } catch (InterruptedException e) {
+                    throw new RuntimeException("Interrupted while correlating", e);
+                }
+            }
+            count++;
+        }
+        return exchange;
+    }
+
+    /**
      * Process the reply message
      * @throws JMSException 
      */