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 2015/05/03 11:38:23 UTC

[5/6] camel git commit: Issue CAMEL-8640. More safe ensuring of space in queue.

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/4556db63
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4556db63
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4556db63

Branch: refs/heads/camel-2.15.x
Commit: 4556db6335c519228c541b54113858ec5457a8fe
Parents: 2c19b34
Author: Robert Budźko <r....@oberthur.com>
Authored: Sat May 2 13:50:45 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun May 3 11:41:53 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/4556db63/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);