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
commit 7300fa5fb2e77f561476cdce9e31dc9509bdad00 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Mar 14 09:49:00 2021 +0100 CAMEL-16353: camel-core - Force eager classloading in build phase --- .../org/apache/camel/impl/engine/DefaultReactiveExecutor.java | 10 ++++++++++ .../camel/processor/errorhandler/RedeliveryErrorHandler.java | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java index a2cb45b..f9e5d1d 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java @@ -99,6 +99,16 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE } @Override + protected void doBuild() throws Exception { + super.doBuild(); + + // force to create and load the class during build time so the JVM does not + // load the class on first exchange to be created + Worker dummy = new Worker(0, this); + LOG.trace("Warming up DefaultReactiveExecutor loaded class: {}", dummy.getClass().getName()); + } + + @Override protected void doStop() throws Exception { if (LOG.isDebugEnabled() && statisticsEnabled) { LOG.debug("Stopping DefaultReactiveExecutor [createdWorkers: {}, runningWorkers: {}, pendingTasks: {}]", diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java index 544de26..1481748 100644 --- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java +++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -1588,6 +1587,11 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport simpleTask = deadLetter == null && !redeliveryEnabled && (exceptionPolicies == null || exceptionPolicies.isEmpty()) && onPrepareProcessor == null; + // force to create and load the class during build time so the JVM does not + // load the class on first exchange to be created + Object dummy = simpleTask ? new SimpleTask() : new RedeliveryTask(); + LOG.trace("Warming up RedeliveryErrorHandler loaded class: {}", dummy.getClass().getName()); + boolean pooled = camelContext.adapt(ExtendedCamelContext.class).getExchangeFactory().isPooled(); if (pooled) { taskFactory = new PooledTaskFactory() {