Issue CAMEL-8640. More safe ensuring of space in queue.

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

Branch: refs/heads/master
Commit: c0f553de3542ff22797c3ac4b4f2b917c7bc2a00
Parents: d0bf15f
Author: Robert Budźko <r.bud...@oberthur.com>
Authored: Sat May 2 13:50:45 2015 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun May 3 11:33:17 2015 +0200

----------------------------------------------------------------------
 .../apache/camel/processor/interceptor/BacklogTracer.java   | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c0f553de/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
 
b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
index e2c51bd..fa0dcda 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
@@ -153,9 +153,12 @@ public class BacklogTracer extends ServiceSupport 
implements InterceptStrategy {
             return;
         }
 
-        // ensure there is space on the queue and we need room for ourselves 
and possible also a first pseudo message as well
-        if (queue.size() >= backlogSize) {
-            queue.poll();
+        // ensure there is space on the queue by polling until at least single 
slot is free
+        int drain = queue.size() - backlogSize + 1;
+        if (drain > 0) {
+            for (int i = 0; i < drain; i++) {
+                queue.poll();
+            }
         }
 
         queue.add(event);

Reply via email to