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 11:20:54 UTC

[camel] 06/06: CAMEL-19998: cleanup executor service manager 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

commit 29566baad543eff2ca69b69b10b31589cf186dfc
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Oct 17 09:44:28 2023 +0200

    CAMEL-19998: cleanup executor service manager API
---
 .../camel/impl/engine/AbstractCamelContext.java       | 17 +++--------------
 .../impl/engine/DefaultCamelContextExtension.java     | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 14 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 38423b8f153..21546e539e2 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
@@ -201,7 +201,6 @@ public abstract class AbstractCamelContext extends BaseService
     volatile StartupStepRecorder startupStepRecorder = new DefaultStartupStepRecorder();
     int defaultRouteStartupOrder = 1000;
 
-    private final Object lock = new Object();
     private final DefaultCamelContextExtension camelContextExtension = new DefaultCamelContextExtension(this);
     private final AtomicInteger endpointKeyCounter = new AtomicInteger();
     private final List<EndpointStrategy> endpointStrategies = new ArrayList<>();
@@ -261,7 +260,6 @@ public abstract class AbstractCamelContext extends BaseService
     private Boolean autowiredEnabled = Boolean.TRUE;
     private Long delay;
     private Map<String, String> globalOptions = new HashMap<>();
-    private volatile ExecutorServiceManager executorServiceManager;
     private EndpointRegistry<NormalizedUri> endpoints;
     private RuntimeEndpointRegistry runtimeEndpointRegistry;
     private ShutdownRoute shutdownRoute = ShutdownRoute.Default;
@@ -2860,7 +2858,7 @@ public abstract class AbstractCamelContext extends BaseService
         // the route back as before
 
         // shutdown executor service, reactive executor last
-        InternalServiceManager.shutdownServices(this, executorServiceManager);
+        InternalServiceManager.shutdownServices(this, camelContextExtension.getExecutorServiceManager());
         InternalServiceManager.shutdownServices(this, camelContextExtension.getReactiveExecutor());
 
         // shutdown type converter and registry as late as possible
@@ -3551,21 +3549,12 @@ public abstract class AbstractCamelContext extends BaseService
 
     @Override
     public ExecutorServiceManager getExecutorServiceManager() {
-        if (executorServiceManager == null) {
-            synchronized (lock) {
-                if (executorServiceManager == null) {
-                    setExecutorServiceManager(createExecutorServiceManager());
-                }
-            }
-        }
-        return this.executorServiceManager;
+        return camelContextExtension.getExecutorServiceManager();
     }
 
     @Override
     public void setExecutorServiceManager(ExecutorServiceManager executorServiceManager) {
-        // special for executorServiceManager as want to stop it manually so
-        // false in stopOnShutdown
-        this.executorServiceManager = internalServiceManager.addService(executorServiceManager, false);
+        camelContextExtension.setExecutorServiceManager(executorServiceManager);
     }
 
     @Override
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 c9206743d5b..208c56d61d6 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
@@ -47,6 +47,7 @@ import org.apache.camel.spi.EndpointUriFactory;
 import org.apache.camel.spi.EventNotifier;
 import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.ExchangeFactoryManager;
+import org.apache.camel.spi.ExecutorServiceManager;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.HeadersMapFactory;
 import org.apache.camel.spi.InflightRepository;
@@ -127,6 +128,7 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
     private volatile TypeConverter typeConverter;
     private volatile RouteController routeController;
     private volatile ShutdownStrategy shutdownStrategy;
+    private volatile ExecutorServiceManager executorServiceManager;
 
     private volatile Injector injector;
 
@@ -889,6 +891,23 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
         this.shutdownStrategy = camelContext.getInternalServiceManager().addService(shutdownStrategy);
     }
 
+    ExecutorServiceManager getExecutorServiceManager() {
+        if (executorServiceManager == null) {
+            synchronized (lock) {
+                if (executorServiceManager == null) {
+                    setExecutorServiceManager(camelContext.createExecutorServiceManager());
+                }
+            }
+        }
+        return this.executorServiceManager;
+    }
+
+    void setExecutorServiceManager(ExecutorServiceManager executorServiceManager) {
+        // special for executorServiceManager as want to stop it manually so
+        // false in stopOnShutdown
+        this.executorServiceManager = camelContext.getInternalServiceManager().addService(executorServiceManager, false);
+    }
+
     @Override
     public RouteController getInternalRouteController() {
         return internalRouteController;