You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ra...@apache.org on 2012/11/05 00:30:58 UTC

svn commit: r1405674 - in /camel/branches/camel-2.9.x: ./ camel-core/src/main/java/org/apache/camel/support/ components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/

Author: raulk
Date: Sun Nov  4 23:30:58 2012
New Revision: 1405674

URL: http://svn.apache.org/viewvc?rev=1405674&view=rev
Log:
Backported to 2.9.x. CAMEL-5769: Camel JMS producer can block a thread under specific circumstances. Corrected a log message.

Added:
    camel/branches/camel-2.9.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBlockedAsyncRoutingEngineTest.java
      - copied unchanged from r1405662, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsBlockedAsyncRoutingEngineTest.java
Modified:
    camel/branches/camel-2.9.x/   (props changed)
    camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java
    camel/branches/camel-2.9.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java

Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1405662

Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java?rev=1405674&r1=1405673&r2=1405674&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java Sun Nov  4 23:30:58 2012
@@ -165,6 +165,10 @@ public class DefaultTimeoutMap<K, V> ext
 
     public void purge() {
         log.trace("There are {} in the timeout map", map.size());
+        if (map.isEmpty()) {
+            return;
+        }
+        
         long now = currentTime();
 
         List<TimeoutMapEntry<K, V>> expired = new ArrayList<TimeoutMapEntry<K, V>>();
@@ -200,7 +204,13 @@ public class DefaultTimeoutMap<K, V> ext
                 try {
                     // now fire eviction notification
                     for (TimeoutMapEntry<K, V> entry : expired) {
-                        boolean evict = onEviction(entry.getKey(), entry.getValue());
+                        boolean evict = false;
+                        try {
+                            evict = onEviction(entry.getKey(), entry.getValue());
+                        } catch (Throwable t) {
+                            log.warn("Exception happened during eviction of entry ID {}, won't evict and will continue trying: {}", 
+                                    entry.getValue(), t);
+                        }
                         if (evict) {
                             // okay this entry should be evicted
                             evicts.add(entry.getKey());

Modified: camel/branches/camel-2.9.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java?rev=1405674&r1=1405673&r2=1405674&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java (original)
+++ camel/branches/camel-2.9.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java Sun Nov  4 23:30:58 2012
@@ -53,7 +53,9 @@ public class TemporaryQueueReplyManager 
         log.trace("Updated provisional correlationId [{}] to expected correlationId [{}]", correlationId, newCorrelationId);
 
         ReplyHandler handler = correlation.remove(correlationId);
-        correlation.put(newCorrelationId, handler, requestTimeout);
+        if (handler != null) {
+            correlation.put(newCorrelationId, handler, requestTimeout);
+        }
     }
 
     @Override