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 5657050 CAMEL-16353: camel-main - Add @EagerClassloaded to mark classes which should be eager loaded via camel-main. This optimize to load these classes before Camel is started and otherwise would load these classes on first message processed. A maven plugin scans the code and updates the source code to keep the list of classes to eager loaded automatic up-to-date. 5657050 is described below commit 56570505e003b9c9e1ab18f0b686b2ed5735854f Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Mar 31 14:03:05 2021 +0200 CAMEL-16353: camel-main - Add @EagerClassloaded to mark classes which should be eager loaded via camel-main. This optimize to load these classes before Camel is started and otherwise would load these classes on first message processed. A maven plugin scans the code and updates the source code to keep the list of classes to eager loaded automatic up-to-date. --- .../camel/impl/engine/DefaultReactiveExecutor.java | 16 +++++++--------- .../org/apache/camel/main/EagerClassloadedHelper.java | 3 ++- 2 files changed, 9 insertions(+), 10 deletions(-) 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 f9e5d1d..343254d 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 @@ -26,6 +26,7 @@ import org.apache.camel.StaticService; import org.apache.camel.api.management.ManagedAttribute; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.spi.ReactiveExecutor; +import org.apache.camel.spi.annotations.EagerClassloaded; import org.apache.camel.support.service.ServiceSupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +35,7 @@ import org.slf4j.LoggerFactory; * Default {@link ReactiveExecutor}. */ @ManagedResource(description = "Managed ReactiveExecutor") +@EagerClassloaded public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveExecutor, StaticService { private static final Logger LOG = LoggerFactory.getLogger(DefaultReactiveExecutor.class); @@ -98,14 +100,10 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE return pendingTasks.intValue(); } - @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()); + public static void onClassloaded(Logger log) { + log.trace("Loaded DefaultReactiveExecutor"); + Worker dummy = new Worker(-1, null); + log.trace("Loaded {}", dummy.getClass().getName()); } @Override @@ -128,7 +126,7 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE public Worker(int number, DefaultReactiveExecutor executor) { this.number = number; this.executor = executor; - this.stats = executor.isStatisticsEnabled(); + this.stats = executor != null && executor.isStatisticsEnabled(); } void schedule(Runnable runnable, boolean first, boolean main, boolean sync) { diff --git a/core/camel-main/src/main/java/org/apache/camel/main/EagerClassloadedHelper.java b/core/camel-main/src/main/java/org/apache/camel/main/EagerClassloadedHelper.java index 69d0ed5..db65aec 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/EagerClassloadedHelper.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/EagerClassloadedHelper.java @@ -39,8 +39,9 @@ public final class EagerClassloadedHelper { int count = 0; // EAGER-CLASSLOADED: START - count = 8; + count = 9; org.apache.camel.impl.engine.CamelInternalProcessor.onClassloaded(LOG); + org.apache.camel.impl.engine.DefaultReactiveExecutor.onClassloaded(LOG); org.apache.camel.impl.engine.DefaultUnitOfWork.onClassloaded(LOG); org.apache.camel.processor.Pipeline.onClassloaded(LOG); org.apache.camel.processor.PipelineHelper.onClassloaded(LOG);