Author: raulk
Date: Sun Nov  4 23:29:22 2012
New Revision: 1405673

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

Modified:
    
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java

Modified: 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java?rev=1405673&r1=1405672&r2=1405673&view=diff
==============================================================================
--- 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java
 (original)
+++ 
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java
 Sun Nov  4 23:29:22 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());


Reply via email to