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

Reply via email to