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 <[email protected]>
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);