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);

Reply via email to