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 4134d21 CAMEL-16238: Registry should stop during shutdown of CamelContext and clear its fallback registry 4134d21 is described below commit 4134d215d7c4abd44612e7ae52a6c8d112e251b0 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Feb 25 07:58:21 2021 +0100 CAMEL-16238: Registry should stop during shutdown of CamelContext and clear its fallback registry --- .../org/apache/camel/impl/engine/AbstractCamelContext.java | 4 +++- .../java/org/apache/camel/support/DefaultRegistry.java | 14 +++++++++++++- .../main/java/org/apache/camel/support/SimpleRegistry.java | 8 +++++++- 3 files changed, 23 insertions(+), 3 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 c706c88..e8cf42c 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 @@ -3298,9 +3298,10 @@ public abstract class AbstractCamelContext extends BaseService shutdownServices(executorServiceManager); shutdownServices(reactiveExecutor); - // shutdown type converter as late as possible + // shutdown type converter and registry as late as possible ServiceHelper.stopService(typeConverter); ServiceHelper.stopService(typeConverterRegistry); + ServiceHelper.stopService(registry); // stop the lazy created so they can be re-created on restart forceStopLazyInitialization(); @@ -3687,6 +3688,7 @@ public abstract class AbstractCamelContext extends BaseService asyncProcessorAwaitManager = null; exchangeFactory = null; exchangeFactoryManager = null; + registry = null; } /** diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultRegistry.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultRegistry.java index 05342ca..4e37dc3 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/DefaultRegistry.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultRegistry.java @@ -16,6 +16,7 @@ */ package org.apache.camel.support; +import java.io.Closeable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -31,6 +32,9 @@ import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; import org.apache.camel.spi.BeanRepository; import org.apache.camel.spi.Registry; +import org.apache.camel.support.service.ServiceHelper; +import org.apache.camel.support.service.ServiceSupport; +import org.apache.camel.util.IOHelper; /** * The default {@link Registry} which supports using a given first-choice repository to lookup the beans, such as @@ -40,7 +44,7 @@ import org.apache.camel.spi.Registry; * Notice that beans in the fallback registry are not managed by the first-choice registry, so these beans may not * support dependency injection and other features that the first-choice registry may offer. */ -public class DefaultRegistry implements Registry, CamelContextAware { +public class DefaultRegistry extends ServiceSupport implements Registry, CamelContextAware { protected CamelContext camelContext; protected List<BeanRepository> repositories; @@ -215,4 +219,12 @@ public class DefaultRegistry implements Registry, CamelContextAware { return answer; } + @Override + protected void doStop() throws Exception { + super.doStop(); + if (fallbackRegistry instanceof Closeable) { + IOHelper.close((Closeable) fallbackRegistry); + } + ServiceHelper.stopAndShutdownService(fallbackRegistry); + } } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/SimpleRegistry.java b/core/camel-support/src/main/java/org/apache/camel/support/SimpleRegistry.java index 39528bd..4d443b0 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/SimpleRegistry.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/SimpleRegistry.java @@ -16,6 +16,8 @@ */ package org.apache.camel.support; +import java.io.Closeable; +import java.io.IOException; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; @@ -31,7 +33,7 @@ import org.apache.camel.spi.Registry; * * @see DefaultRegistry */ -public class SimpleRegistry extends LinkedHashMap<String, Map<Class<?>, Object>> implements Registry { +public class SimpleRegistry extends LinkedHashMap<String, Map<Class<?>, Object>> implements Registry, Closeable { @Override public Object lookupByName(String name) { @@ -101,4 +103,8 @@ public class SimpleRegistry extends LinkedHashMap<String, Map<Class<?>, Object>> computeIfAbsent(id, k -> new LinkedHashMap<>()).put(type, wrap(bean)); } + @Override + public void close() throws IOException { + clear(); + } }