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/03/31 11:05:41 UTC
[camel] 01/02: CAMEL-15105: make the ErrorHandlerExecutorService a plugin of the context
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 fa2cc3f2bec9da086ca6fc7e0183e82fa64f42d4
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Mar 31 11:03:13 2023 +0200
CAMEL-15105: make the ErrorHandlerExecutorService a plugin of the context
---
.../main/java/org/apache/camel/ExtendedCamelContext.java | 6 ------
.../apache/camel/impl/engine/AbstractCamelContext.java | 3 +--
.../camel/impl/engine/DefaultCamelContextExtension.java | 14 --------------
.../org/apache/camel/impl/engine/SimpleCamelContext.java | 2 ++
.../camel/impl/lw/LightweightCamelContextExtension.java | 6 ------
.../processor/errorhandler/RedeliveryErrorHandler.java | 3 ++-
.../main/java/org/apache/camel/support/PluginHelper.java | 16 ++++++++++++++++
7 files changed, 21 insertions(+), 29 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
index d6082ef3222..7d4b51aebfc 100644
--- a/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/ExtendedCamelContext.java
@@ -19,7 +19,6 @@ package org.apache.camel;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
import org.apache.camel.catalog.RuntimeCamelCatalog;
import org.apache.camel.console.DevConsoleResolver;
@@ -534,11 +533,6 @@ public interface ExtendedCamelContext {
*/
BeanProcessorFactory getBeanProcessorFactory();
- /**
- * Gets the default shared thread pool for error handlers which leverages this for asynchronous redelivery tasks.
- */
- ScheduledExecutorService getErrorHandlerExecutorService();
-
/**
* Adds the given interceptor strategy
*
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 876f8eb565a..13e0ebdc8d2 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
@@ -239,7 +239,6 @@ public abstract class AbstractCamelContext extends BaseService
volatile AsyncProcessorAwaitManager asyncProcessorAwaitManager;
volatile ModelJAXBContextFactory modelJAXBContextFactory;
volatile UnitOfWorkFactory unitOfWorkFactory;
- volatile ScheduledExecutorService errorHandlerExecutorService;
volatile BeanIntrospection beanIntrospection;
volatile boolean eventNotificationApplicable;
volatile StartupStepRecorder startupStepRecorder = new DefaultStartupStepRecorder();
@@ -2926,10 +2925,10 @@ public abstract class AbstractCamelContext extends BaseService
// the stop order is important
// shutdown default error handler thread pool
+ final ScheduledExecutorService errorHandlerExecutorService = PluginHelper.getErrorHandlerExecutorService(this);
if (errorHandlerExecutorService != null) {
// force shutting down the thread pool
getExecutorServiceManager().shutdownNow(errorHandlerExecutorService);
- errorHandlerExecutorService = null;
}
// shutdown debugger
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 f2505551171..d2d6d6a21b3 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
@@ -23,7 +23,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ScheduledExecutorService;
import org.apache.camel.CamelContextAware;
import org.apache.camel.Endpoint;
@@ -307,19 +306,6 @@ class DefaultCamelContextExtension implements ExtendedCamelContext {
this.errorHandlerFactory = errorHandlerFactory;
}
- @Override
- public ScheduledExecutorService getErrorHandlerExecutorService() {
- if (camelContext.errorHandlerExecutorService == null) {
- synchronized (camelContext.lock) {
- if (camelContext.errorHandlerExecutorService == null) {
- // setup default thread pool for error handler
- camelContext.errorHandlerExecutorService = camelContext.createErrorHandlerExecutorService();
- }
- }
- }
- return camelContext.errorHandlerExecutorService;
- }
-
@Override
public UnitOfWorkFactory getUnitOfWorkFactory() {
if (camelContext.unitOfWorkFactory == null) {
diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
index 937b2cae356..93bef777bd5 100644
--- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
+++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/SimpleCamelContext.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl.engine;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.ScheduledExecutorService;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
@@ -132,6 +133,7 @@ public class SimpleCamelContext extends AbstractCamelContext {
super.doBuild();
getCamelContextExtension().addContextPlugin(CliConnectorFactory.class, createCliConnectorFactory());
+ getCamelContextExtension().addContextPlugin(ScheduledExecutorService.class, createErrorHandlerExecutorService());
}
@Override
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
index da2443a87a8..7eb7b2bbd2b 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContextExtension.java
@@ -21,7 +21,6 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelContext;
@@ -424,11 +423,6 @@ class LightweightCamelContextExtension implements ExtendedCamelContext {
throw new UnsupportedOperationException();
}
- @Override
- public ScheduledExecutorService getErrorHandlerExecutorService() {
- throw new UnsupportedOperationException();
- }
-
@Override
public List<InterceptStrategy> getInterceptStrategies() {
throw new UnsupportedOperationException();
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
index 05392b9d9ee..2e8eba75bd7 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/errorhandler/RedeliveryErrorHandler.java
@@ -54,6 +54,7 @@ import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.EventHelper;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.MessageHelper;
+import org.apache.camel.support.PluginHelper;
import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StopWatch;
@@ -1621,7 +1622,7 @@ public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport
if (redeliveryEnabled) {
if (executorService == null) {
// use default shared executor service
- executorService = camelContext.getCamelContextExtension().getErrorHandlerExecutorService();
+ executorService = PluginHelper.getErrorHandlerExecutorService(camelContext);
}
if (LOG.isDebugEnabled()) {
LOG.debug("Using ExecutorService: {} for redeliveries on error handler: {}", executorService, this);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
index 5439f21a401..8ef62d0efd9 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PluginHelper.java
@@ -17,6 +17,8 @@
package org.apache.camel.support;
+import java.util.concurrent.ScheduledExecutorService;
+
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.spi.CamelBeanPostProcessor;
@@ -135,4 +137,18 @@ public final class PluginHelper {
public static UriFactoryResolver getUriFactoryResolver(ExtendedCamelContext extendedCamelContext) {
return extendedCamelContext.getContextPlugin(UriFactoryResolver.class);
}
+
+ /**
+ * Gets the default shared thread pool for error handlers which leverages this for asynchronous redelivery tasks.
+ */
+ public static ScheduledExecutorService getErrorHandlerExecutorService(CamelContext camelContext) {
+ return getErrorHandlerExecutorService(camelContext.getCamelContextExtension());
+ }
+
+ /**
+ * Gets the default shared thread pool for error handlers which leverages this for asynchronous redelivery tasks.
+ */
+ public static ScheduledExecutorService getErrorHandlerExecutorService(ExtendedCamelContext extendedCamelContext) {
+ return extendedCamelContext.getContextPlugin(ScheduledExecutorService.class);
+ }
}