This is an automated email from the ASF dual-hosted git repository.
iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new ea71adb Graceful shutdown enhancement in Spring (#2901)
ea71adb is described below
commit ea71adbf2a9526e3091b5c15d59e5e4b8872ca81
Author: LiZhen <[email protected]>
AuthorDate: Fri Dec 7 11:17:41 2018 +0800
Graceful shutdown enhancement in Spring (#2901)
---
.../src/main/java/org/apache/dubbo/config/DubboShutdownHook.java | 4 ++--
.../dubbo/config/spring/extension/SpringExtensionFactory.java | 6 ++----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
index 90ed237..d554281 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/DubboShutdownHook.java
@@ -55,13 +55,13 @@ public class DubboShutdownHook extends Thread {
if (logger.isInfoEnabled()) {
logger.info("Run shutdown hook now.");
}
- destroyAll();
+ doDestroy();
}
/**
* Destroy all the resources, including registries and protocols.
*/
- public void destroyAll() {
+ public void doDestroy() {
if (!destroyed.compareAndSet(false, true)) {
return;
}
diff --git
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
index 99b538c..755db1a 100644
---
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
+++
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
@@ -44,6 +44,7 @@ public class SpringExtensionFactory implements
ExtensionFactory {
public static void addApplicationContext(ApplicationContext context) {
contexts.add(context);
+
Runtime.getRuntime().removeShutdownHook(DubboShutdownHook.getDubboShutdownHook());
BeanFactoryUtils.addApplicationListener(context, shutdownHookListener);
}
@@ -105,11 +106,8 @@ public class SpringExtensionFactory implements
ExtensionFactory {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextClosedEvent) {
- // we call it anyway since dubbo shutdown hook make sure its
destroyAll() is re-entrant.
- // pls. note we should not remove dubbo shutdown hook when
spring framework is present, this is because
- // its shutdown hook may not be installed.
DubboShutdownHook shutdownHook =
DubboShutdownHook.getDubboShutdownHook();
- shutdownHook.destroyAll();
+ shutdownHook.doDestroy();
}
}
}