This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new f93f1e8 camel-core - Optimize routing engine for isErrorHandlerHandled to be inlined f93f1e8 is described below commit f93f1e8508b251caecec998707285f47b875effe Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Oct 21 12:16:50 2020 +0200 camel-core - Optimize routing engine for isErrorHandlerHandled to be inlined --- .../src/main/java/org/apache/camel/ExtendedExchange.java | 9 +++++++++ .../org/apache/camel/impl/event/ExchangeFailureHandledEvent.java | 4 ++-- .../src/main/java/org/apache/camel/processor/PipelineHelper.java | 6 ++++-- .../processor/aggregate/ShareUnitOfWorkAggregationStrategy.java | 3 ++- .../camel/processor/aggregate/UseLatestAggregationStrategy.java | 3 ++- .../camel/processor/errorhandler/RedeliveryErrorHandler.java | 8 ++++---- .../processor/aggregator/BodyOnlyAggregationStrategyTest.java | 4 ---- .../src/main/java/org/apache/camel/support/DefaultExchange.java | 7 ++++++- 8 files changed, 29 insertions(+), 15 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java index 714b504..bb0b523 100644 --- a/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java +++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedExchange.java @@ -141,10 +141,19 @@ public interface ExtendedExchange extends Exchange { /** * Whether the exchange has been handled by the error handler. This is used internally by Camel. + * + * Important: Call {@link #isErrorHandlerHandledSet()} first before this method. + * + * @see #isErrorHandlerHandledSet() */ boolean isErrorHandlerHandled(); /** + * Whether the error handler handled flag has been set. + */ + boolean isErrorHandlerHandledSet(); + + /** * Whether the exchange has been handled by the error handler. This is used internally by Camel. */ Boolean getErrorHandlerHandled(); diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java index 4b97ec2..9bd4bb8 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/event/ExchangeFailureHandledEvent.java @@ -36,8 +36,8 @@ public class ExchangeFailureHandledEvent extends AbstractExchangeEvent implement this.failureHandler = failureHandler; this.deadLetterChannel = deadLetterChannel; this.deadLetterUri = deadLetterUri; - this.handled = source.adapt(ExtendedExchange.class).getErrorHandlerHandled() != null - && source.adapt(ExtendedExchange.class).getErrorHandlerHandled(); + this.handled = source.adapt(ExtendedExchange.class).isErrorHandlerHandledSet() + && source.adapt(ExtendedExchange.class).isErrorHandlerHandled(); } @Override diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java b/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java index 2bf115b..cb37b16 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/PipelineHelper.java @@ -40,7 +40,9 @@ public final class PipelineHelper { */ public static boolean continueProcessing(Exchange exchange, String message, Logger log) { ExtendedExchange ee = (ExtendedExchange) exchange; - if (ee.isFailed() || ee.isRollbackOnly() || ee.isRollbackOnlyLast() || ee.isErrorHandlerHandled()) { + boolean stop = ee.isFailed() || ee.isRollbackOnly() || ee.isRollbackOnlyLast() + || (ee.isErrorHandlerHandledSet() && ee.isErrorHandlerHandled()); + if (stop) { // The errorErrorHandler is only set if satisfactory handling was done // by the error handler. It's still an exception, the exchange still failed. if (log.isDebugEnabled()) { @@ -52,7 +54,7 @@ public final class PipelineHelper { if (exchange.getException() != null) { sb.append(" Exception: ").append(exchange.getException()); } - if (ee.isErrorHandlerHandled()) { + if (ee.isErrorHandlerHandledSet() && ee.isErrorHandlerHandled()) { sb.append(" Handled by the error handler."); } log.debug(sb.toString()); diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java b/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java index b03293b..0c6dffb 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/ShareUnitOfWorkAggregationStrategy.java @@ -106,7 +106,8 @@ public final class ShareUnitOfWorkAggregationStrategy extends ServiceSupport imp protected void propagateFailure(Exchange answer, Exchange newExchange) { ExtendedExchange nee = (ExtendedExchange) newExchange; // if new exchange failed then propagate all the error related properties to the answer - if (nee.isFailed() || nee.isRollbackOnly() || nee.isRollbackOnlyLast() || nee.isErrorHandlerHandled()) { + if (nee.isFailed() || nee.isRollbackOnly() || nee.isRollbackOnlyLast() + || (nee.isErrorHandlerHandledSet() && nee.isErrorHandlerHandled())) { if (newExchange.getException() != null) { answer.setException(newExchange.getException()); } diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java b/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java index 8c7d784..c4272c4 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java @@ -71,7 +71,8 @@ public class UseLatestAggregationStrategy implements AggregationStrategy { // propagate exception from old exchange if there isn't already an exception ExtendedExchange oee = (ExtendedExchange) oldExchange; - if (oee.isFailed() || oee.isRollbackOnly() || oee.isRollbackOnlyLast() || oee.isErrorHandlerHandled()) { + if (oee.isFailed() || oee.isRollbackOnly() || oee.isRollbackOnlyLast() + || (oee.isErrorHandlerHandledSet() && oee.isErrorHandlerHandled())) { // propagate failure by using old exchange as the answer return oldExchange; } diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java index f6cea74..1ac482d 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java @@ -469,9 +469,9 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport ExchangeHelper.setFailureHandled(exchange); // honor if already set a handling - boolean alreadySet = ee.getErrorHandlerHandled() != null; + boolean alreadySet = ee.isErrorHandlerHandledSet(); if (alreadySet) { - boolean handled = ee.getErrorHandlerHandled() != null && ee.getErrorHandlerHandled(); + boolean handled = ee.isErrorHandlerHandled(); LOG.trace("This exchange has already been marked for handling: {}", handled); if (!handled) { // exception not handled, put exception back in the exchange @@ -1146,9 +1146,9 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport ExchangeHelper.setFailureHandled(exchange); // honor if already set a handling - boolean alreadySet = ee.getErrorHandlerHandled() != null; + boolean alreadySet = ee.isErrorHandlerHandledSet(); if (alreadySet) { - boolean handled = ee.getErrorHandlerHandled() != null && ee.getErrorHandlerHandled(); + boolean handled = ee.isErrorHandlerHandled(); LOG.trace("This exchange has already been marked for handling: {}", handled); if (!handled) { // exception not handled, put exception back in the exchange diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java index 0784642..ab577c8 100644 --- a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/BodyOnlyAggregationStrategyTest.java @@ -78,10 +78,6 @@ public class BodyOnlyAggregationStrategyTest extends ContextTestSupport { oldExchange.adapt(ExtendedExchange.class).setErrorHandlerHandled( newExchange.adapt(ExtendedExchange.class).getErrorHandlerHandled()); - // deprecated usage: - // if (newExchange.getProperties().get(Exchange.ERRORHANDLER_HANDLED) != null) { - // oldExchange.getProperties().put(Exchange.ERRORHANDLER_HANDLED, newExchange.getProperties().get(Exchange.ERRORHANDLER_HANDLED)); - //} return oldExchange; } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java index ccadefe..eff55ce 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultExchange.java @@ -675,8 +675,13 @@ public final class DefaultExchange implements ExtendedExchange { } @Override + public boolean isErrorHandlerHandledSet() { + return errorHandlerHandled != null; + } + + @Override public boolean isErrorHandlerHandled() { - return errorHandlerHandled != null && errorHandlerHandled; + return errorHandlerHandled; } @Override