Reduce length of stacktraces
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0f5b5816 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0f5b5816 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0f5b5816 Branch: refs/heads/master Commit: 0f5b5816140caad8e541b5c4acddcc3c948f91b0 Parents: bae087e Author: Claus Ibsen <davscl...@apache.org> Authored: Wed Aug 3 15:38:04 2016 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Aug 3 15:38:04 2016 +0200 ---------------------------------------------------------------------- .../camel/processor/DelegateAsyncProcessor.java | 19 +++++++++++++++++-- .../camel/processor/RedeliveryErrorHandler.java | 3 ++- 2 files changed, 19 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/0f5b5816/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java index ddca1fe..3abee6e 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/DelegateAsyncProcessor.java @@ -18,6 +18,7 @@ package org.apache.camel.processor; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CountDownLatch; import org.apache.camel.AsyncCallback; import org.apache.camel.AsyncProcessor; @@ -25,9 +26,9 @@ import org.apache.camel.DelegateProcessor; import org.apache.camel.Exchange; import org.apache.camel.Navigate; import org.apache.camel.Processor; +import org.apache.camel.spi.AsyncProcessorAwaitManager; import org.apache.camel.support.ServiceSupport; import org.apache.camel.util.AsyncProcessorConverterHelper; -import org.apache.camel.util.AsyncProcessorHelper; import org.apache.camel.util.ServiceHelper; /** @@ -88,7 +89,21 @@ public class DelegateAsyncProcessor extends ServiceSupport implements DelegatePr } public void process(Exchange exchange) throws Exception { - AsyncProcessorHelper.process(this, exchange); + // inline org.apache.camel.util.AsyncProcessorHelper.process(org.apache.camel.AsyncProcessor, org.apache.camel.Exchange) + // to optimize and reduce stacktrace lengths + final AsyncProcessorAwaitManager awaitManager = exchange.getContext().getAsyncProcessorAwaitManager(); + final CountDownLatch latch = new CountDownLatch(1); + // call the asynchronous method and wait for it to be done + boolean sync = process(exchange, new AsyncCallback() { + public void done(boolean doneSync) { + if (!doneSync) { + awaitManager.countDown(exchange, latch); + } + } + }); + if (!sync) { + awaitManager.await(exchange, latch); + } } public boolean process(final Exchange exchange, final AsyncCallback callback) { http://git-wip-us.apache.org/repos/asf/camel/blob/0f5b5816/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java index 847b9c5..5834b0a 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java +++ b/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java @@ -67,6 +67,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme protected final AtomicInteger redeliverySleepCounter = new AtomicInteger(); protected ScheduledExecutorService executorService; protected final CamelContext camelContext; + protected final AsyncProcessorAwaitManager awaitManager; protected final Processor deadLetter; protected final String deadLetterUri; protected final boolean deadLetterHandleNewException; @@ -263,6 +264,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme ObjectHelper.notNull(redeliveryPolicy, "RedeliveryPolicy", this); this.camelContext = camelContext; + this.awaitManager = camelContext.getAsyncProcessorAwaitManager(); this.redeliveryProcessor = redeliveryProcessor; this.deadLetter = deadLetter; this.output = output; @@ -394,7 +396,6 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport impleme // inline org.apache.camel.util.AsyncProcessorHelper.process(org.apache.camel.AsyncProcessor, org.apache.camel.Exchange) // to optimize and reduce stacktrace lengths - final AsyncProcessorAwaitManager awaitManager = exchange.getContext().getAsyncProcessorAwaitManager(); final CountDownLatch latch = new CountDownLatch(1); boolean sync = process(exchange, new AsyncCallback() { public void done(boolean doneSync) {