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);