You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/10/17 14:43:43 UTC

[camel] branch main updated: CAMEL-19998: cleanup executor startup step recorder API

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 33585c61b57 CAMEL-19998: cleanup executor startup step recorder API
33585c61b57 is described below

commit 33585c61b5787e469d02575da6fd1001dcb97927
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Oct 17 12:39:13 2023 +0200

    CAMEL-19998: cleanup executor startup step recorder API
---
 .../camel/impl/engine/AbstractCamelContext.java     | 21 ++++++++++++++++++---
 .../impl/engine/DefaultCamelContextExtension.java   |  7 +++++--
 .../DefaultCamelContextSuspendResumeRouteTest.java  |  7 ++++---
 3 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 21546e539e2..5f4d7f6ca8b 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -174,7 +174,6 @@ import org.apache.camel.support.ResolverHelper;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.apache.camel.support.service.BaseService;
 import org.apache.camel.support.service.ServiceHelper;
-import org.apache.camel.support.startup.DefaultStartupStepRecorder;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StopWatch;
@@ -198,7 +197,6 @@ public abstract class AbstractCamelContext extends BaseService
 
     protected final InternalServiceManager internalServiceManager;
 
-    volatile StartupStepRecorder startupStepRecorder = new DefaultStartupStepRecorder();
     int defaultRouteStartupOrder = 1000;
 
     private final DefaultCamelContextExtension camelContextExtension = new DefaultCamelContextExtension(this);
@@ -511,6 +509,7 @@ public abstract class AbstractCamelContext extends BaseService
             if (component != null && created.get() && autoStart && (isStarted() || isStarting())) {
                 // If the component is looked up after the context is started,
                 // lets start it up.
+                final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
                 StartupStep step = startupStepRecorder.beginStep(Component.class, name, "Start Component");
                 startService(component);
                 startupStepRecorder.endStep(step);
@@ -531,6 +530,8 @@ public abstract class AbstractCamelContext extends BaseService
     private Component initComponent(String name, boolean autoCreateComponents) {
         Component component = null;
         if (autoCreateComponents) {
+            final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
+
             StartupStep step = startupStepRecorder.beginStep(Component.class, name, "Resolve Component");
             try {
                 if (LOG.isDebugEnabled()) {
@@ -727,6 +728,7 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public Endpoint getEndpoint(String uri) {
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         StartupStep step = null;
         // only record startup step during startup (not started)
         if (!isStarted() && startupStepRecorder.isEnabled()) {
@@ -1153,7 +1155,8 @@ public abstract class AbstractCamelContext extends BaseService
             try {
                 RouteStartupOrder route = new DefaultRouteStartupOrder(1, routeService.getRoute(), routeService);
 
-                boolean completed = getShutdownStrategy().shutdown(this, route, timeout, timeUnit, abortAfterTimeout);
+                boolean completed = camelContextExtension.getShutdownStrategy().shutdown(this, route, timeout, timeUnit,
+                        abortAfterTimeout);
                 if (completed) {
                     // must stop route service as well
                     stopRouteService(routeService, false, loggingLevel);
@@ -1490,6 +1493,7 @@ public abstract class AbstractCamelContext extends BaseService
     }
 
     private Language doResolveLanguage(String name) {
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         StartupStep step = null;
         // only record startup step during startup (not started)
         if (!isStarted() && startupStepRecorder.isEnabled()) {
@@ -2038,11 +2042,13 @@ public abstract class AbstractCamelContext extends BaseService
         getCamelContextExtension().addContextPlugin(NodeIdFactory.class, createNodeIdFactory());
 
         // auto-detect step recorder from classpath if none has been explicit configured
+        StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         if (startupStepRecorder.getClass().getSimpleName().equals("DefaultStartupStepRecorder")) {
             StartupStepRecorder fr = camelContextExtension.getBootstrapFactoryFinder()
                     .newInstance(StartupStepRecorder.FACTORY, StartupStepRecorder.class).orElse(null);
             if (fr != null) {
                 LOG.debug("Discovered startup recorder: {} from classpath", fr);
+                camelContextExtension.setStartupStepRecorder(fr);
                 startupStepRecorder = fr;
             }
         }
@@ -2119,6 +2125,7 @@ public abstract class AbstractCamelContext extends BaseService
 
         vetoed = null;
 
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         StartupStep step = startupStepRecorder.beginStep(CamelContext.class, null, "Init CamelContext");
 
         // init the route controller
@@ -2336,6 +2343,7 @@ public abstract class AbstractCamelContext extends BaseService
             LOG.warn("Starting CamelContext: {} after the context has been stopped is not recommended",
                     camelContextExtension.getName());
         }
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         StartupStep step
                 = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(), "Start CamelContext");
 
@@ -2577,6 +2585,7 @@ public abstract class AbstractCamelContext extends BaseService
         startService(getManagementStrategy());
 
         // start lifecycle strategies
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         if (!lifecycleStrategies.isEmpty()) {
             StartupStep subStep
                     = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(),
@@ -2878,6 +2887,7 @@ public abstract class AbstractCamelContext extends BaseService
         }
 
         // ensure any recorder is stopped in case it was kept running
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         startupStepRecorder.stop();
 
         // and clear start date
@@ -3020,6 +3030,7 @@ public abstract class AbstractCamelContext extends BaseService
                 // start the route service
                 routeServices.put(routeService.getId(), routeService);
                 if (shouldStartRoutes()) {
+                    final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
                     StartupStep step
                             = startupStepRecorder.beginStep(Route.class, routeService.getId(), "Start Route Services");
                     // this method will log the routes being started
@@ -3108,6 +3119,7 @@ public abstract class AbstractCamelContext extends BaseService
      * Force some lazy initialization to occur upfront before we start any components and create routes
      */
     protected void forceLazyInitialization() {
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         StartupStep step = startupStepRecorder.beginStep(CamelContext.class, camelContextExtension.getName(),
                 "Start Mandatory Services");
         initEagerMandatoryServices();
@@ -3427,6 +3439,8 @@ public abstract class AbstractCamelContext extends BaseService
 
     private DataFormat doResolveDataFormat(String name) {
         StartupStep step = null;
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
+
         // only record startup step during startup (not started)
         if (!isStarted() && startupStepRecorder.isEnabled()) {
             step = startupStepRecorder.beginStep(DataFormat.class, name, "Resolve DataFormat");
@@ -3462,6 +3476,7 @@ public abstract class AbstractCamelContext extends BaseService
     public DataFormat createDataFormat(String name) {
         StartupStep step = null;
         // only record startup step during startup (not started)
+        final StartupStepRecorder startupStepRecorder = camelContextExtension.getStartupStepRecorder();
         if (!isStarted() && startupStepRecorder.isEnabled()) {
             step = startupStepRecorder.beginStep(DataFormat.class, name, "Create DataFormat");
         }
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
index 208c56d61d6..36a00c93d2d 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultCamelContextExtension.java
@@ -83,6 +83,7 @@ import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.NormalizedUri;
 import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.service.ServiceHelper;
+import org.apache.camel.support.startup.DefaultStartupStepRecorder;
 import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -132,6 +133,8 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
 
     private volatile Injector injector;
 
+    private volatile StartupStepRecorder startupStepRecorder = new DefaultStartupStepRecorder();
+
     @Deprecated
     private ErrorHandlerFactory errorHandlerFactory;
     private String basePackageScan;
@@ -920,12 +923,12 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
 
     @Override
     public StartupStepRecorder getStartupStepRecorder() {
-        return camelContext.startupStepRecorder;
+        return startupStepRecorder;
     }
 
     @Override
     public void setStartupStepRecorder(StartupStepRecorder startupStepRecorder) {
-        camelContext.startupStepRecorder = startupStepRecorder;
+        this.startupStepRecorder = startupStepRecorder;
     }
 
     @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
index 6daf41f2ac1..d9be8fb14dd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
@@ -22,6 +22,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.awaitility.Awaitility;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -49,9 +50,9 @@ public class DefaultCamelContextSuspendResumeRouteTest extends ContextTestSuppor
         context.suspend();
 
         // need to give seda consumer thread time to idle
-        Awaitility.await().atMost(100, TimeUnit.MILLISECONDS)
-                .pollDelay(10, TimeUnit.MILLISECONDS)
-                .untilAsserted(() -> template.sendBody("seda:foo", "B"));
+        Awaitility.await().atMost(200, TimeUnit.MILLISECONDS)
+                .pollDelay(100, TimeUnit.MILLISECONDS)
+                .untilAsserted(() -> Assertions.assertDoesNotThrow(() -> template.sendBody("seda:foo", "B")));
 
         mock.assertIsSatisfied(1000);