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 45f1c64 camel-core - Optimize to use single shared instance for error handlers in the routing engine. 45f1c64 is described below commit 45f1c64505a7e547923fa945f6eb0cfd57ef6a48 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Nov 5 19:24:38 2020 +0100 camel-core - Optimize to use single shared instance for error handlers in the routing engine. --- .../errorhandler/DefaultExceptionPolicyStrategy.java | 13 ++++++++----- .../camel/processor/errorhandler/ErrorHandlerSupport.java | 10 ++-------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java index a8ab043..69c03467 100644 --- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java +++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/DefaultExceptionPolicyStrategy.java @@ -53,6 +53,9 @@ import org.slf4j.LoggerFactory; */ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy { + // thread safe so we can use a shared instance + public static DefaultExceptionPolicyStrategy INSTANCE = new DefaultExceptionPolicyStrategy(); + private static final Logger LOG = LoggerFactory.getLogger(DefaultExceptionPolicyStrategy.class); @Override @@ -96,7 +99,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy { } } - private void initRouteAndContextScopedExceptionPolicies( + private static void initRouteAndContextScopedExceptionPolicies( Set<ExceptionPolicyKey> exceptionPolicies, Set<ExceptionPolicyKey> routeScoped, Set<ExceptionPolicyKey> contextScoped) { @@ -111,7 +114,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy { } } - private boolean findMatchedExceptionPolicy( + private static boolean findMatchedExceptionPolicy( Iterable<ExceptionPolicyKey> exceptionPolicies, Exchange exchange, Throwable exception, Map<Integer, ExceptionPolicyKey> candidates) { @@ -201,7 +204,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy { * @param exception the thrown exception * @return <tt>true</tt> if the to current exception class is a candidate, <tt>false</tt> to skip it. */ - protected boolean filter(ExceptionPolicyKey type, Class<?> exceptionClass, Throwable exception) { + protected static boolean filter(ExceptionPolicyKey type, Class<?> exceptionClass, Throwable exception) { // must be instance of check to ensure that the exceptionClass is one type of the thrown exception return exceptionClass.isInstance(exception); } @@ -219,7 +222,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy { * @param exchange the current {@link Exchange} * @return <tt>true</tt> if matched, <tt>false</tt> otherwise. */ - protected boolean matchesWhen(ExceptionPolicyKey definition, Exchange exchange) { + protected static boolean matchesWhen(ExceptionPolicyKey definition, Exchange exchange) { if (definition.getWhen() == null) { // if no predicate then it's always a match return true; @@ -236,7 +239,7 @@ public class DefaultExceptionPolicyStrategy implements ExceptionPolicyStrategy { * @param exception the exception * @return the list to iterate */ - protected Iterable<Throwable> createExceptionIterable(Throwable exception) { + protected static Iterable<Throwable> createExceptionIterable(Throwable exception) { return ObjectHelper.createExceptionIterable(exception); } diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java index 172cc44..424934c 100644 --- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java +++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/ErrorHandlerSupport.java @@ -30,7 +30,8 @@ import org.apache.camel.support.ChildServiceSupport; public abstract class ErrorHandlerSupport extends ChildServiceSupport implements ErrorHandler { protected final Map<ExceptionPolicyKey, ExceptionPolicy> exceptionPolicies = new LinkedHashMap<>(); - protected ExceptionPolicyStrategy exceptionPolicy = createDefaultExceptionPolicyStrategy(); + // optimize to use a shared instance + protected ExceptionPolicyStrategy exceptionPolicy = DefaultExceptionPolicyStrategy.INSTANCE; public void addErrorHandler(Processor errorHandler) { addChildService(errorHandler); @@ -67,13 +68,6 @@ public abstract class ErrorHandlerSupport extends ChildServiceSupport implements } /** - * Creates the default exception policy strategy to use. - */ - public static ExceptionPolicyStrategy createDefaultExceptionPolicyStrategy() { - return new DefaultExceptionPolicyStrategy(); - } - - /** * Whether this error handler supports transacted exchanges or not. */ public abstract boolean supportTransacted();