Repository: camel Updated Branches: refs/heads/master e3a1bdb6a -> 2dcad657c
CAMEL-11448: Optimise - Detect interrupted exception in a quicker way which optimises the routing engine to be faster. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1e1bae95 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1e1bae95 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1e1bae95 Branch: refs/heads/master Commit: 1e1bae957705f8a6d9dabe08489cd8b70e8c4b1c Parents: e3a1bdb Author: Claus Ibsen <davscl...@apache.org> Authored: Sat Jun 24 22:53:40 2017 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sat Jun 24 22:55:44 2017 +0200 ---------------------------------------------------------------------- camel-core/src/main/java/org/apache/camel/Exchange.java | 1 + .../src/main/java/org/apache/camel/impl/DefaultExchange.java | 4 ++++ .../src/main/java/org/apache/camel/util/ExchangeHelper.java | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1e1bae95/camel-core/src/main/java/org/apache/camel/Exchange.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/Exchange.java b/camel-core/src/main/java/org/apache/camel/Exchange.java index 56e0780..b4e1992 100644 --- a/camel-core/src/main/java/org/apache/camel/Exchange.java +++ b/camel-core/src/main/java/org/apache/camel/Exchange.java @@ -160,6 +160,7 @@ public interface Exchange { String INTERCEPTED_ENDPOINT = "CamelInterceptedEndpoint"; String INTERCEPT_SEND_TO_ENDPOINT_WHEN_MATCHED = "CamelInterceptSendToEndpointWhenMatched"; + String INTERRUPTED = "CamelInterrupted"; String LANGUAGE_SCRIPT = "CamelLanguageScript"; String LOG_DEBUG_BODY_MAX_CHARS = "CamelLogDebugBodyMaxChars"; http://git-wip-us.apache.org/repos/asf/camel/blob/1e1bae95/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java index 2ae2f5b..bb9d982 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultExchange.java @@ -367,6 +367,10 @@ public final class DefaultExchange implements Exchange { // wrap throwable into an exception this.exception = ObjectHelper.wrapCamelExecutionException(this, t); } + if (t instanceof InterruptedException) { + // mark the exchange as interrupted due to the interrupt exception + setProperty(Exchange.INTERRUPTED, Boolean.TRUE); + } } public ExchangePattern getPattern() { http://git-wip-us.apache.org/repos/asf/camel/blob/1e1bae95/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java b/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java index 11b0dac..13d08ad 100644 --- a/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java +++ b/camel-core/src/main/java/org/apache/camel/util/ExchangeHelper.java @@ -676,7 +676,7 @@ public final class ExchangeHelper { * @return <tt>true</tt> if interrupted, <tt>false</tt> otherwise */ public static boolean isInterrupted(Exchange exchange) { - return exchange.getException(InterruptedException.class) != null; + return exchange.getProperty(Exchange.INTERRUPTED, false, boolean.class); } /**