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 2016/08/16 14:28:36 UTC

[5/6] camel git commit: Hardening stuff a little bit .. following sugestions by @pcan

Hardening stuff a little bit .. following sugestions by @pcan 

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/26a78cd1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/26a78cd1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/26a78cd1

Branch: refs/heads/camel-2.17.x
Commit: 26a78cd1ad0b108348e69f16b7be99c1d1d9130e
Parents: ce6eb9e
Author: miti <pr...@textkernel.nl>
Authored: Tue Aug 16 10:03:39 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Aug 16 16:28:14 2016 +0200

----------------------------------------------------------------------
 .../component/rabbitmq/RabbitConsumer.java      | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/26a78cd1/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java
index cb2e47f..86c696a 100644
--- a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java
+++ b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitConsumer.java
@@ -68,10 +68,16 @@ class RabbitConsumer implements com.rabbitmq.client.Consumer {
             if (!consumer.getEndpoint().isAutoAck()) {
             	lock.acquire();
             }
-            doHandleDelivery(consumerTag, envelope, properties, body);
-            if (!consumer.getEndpoint().isAutoAck()) {
-            	lock.release();
-            }
+            //Channel might be open because while we were waiting for the lock, stop() has been succesfully called.
+            if (!channel.isOpen()) return;
+            
+            try {
+                doHandleDelivery(consumerTag, envelope, properties, body);
+            } finally {
+                if (!consumer.getEndpoint().isAutoAck()) {
+                	lock.release();
+                }
+			}
     		
     	} catch (InterruptedException e) {
         	log.error("Thread Interrupted!");
@@ -187,13 +193,15 @@ class RabbitConsumer implements com.rabbitmq.client.Consumer {
             if (isChannelOpen()) {
                 channel.close();
             }
-            lock.release();
 		} catch (TimeoutException e) {
             log.error("Timeout occured");
             throw e;
         } catch (InterruptedException e1) {
         	log.error("Thread Interrupted!");
-        }
+        } finally {
+            lock.release();
+			
+		}
     }
 
     /**