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