From 5576991be387d00fa707655b0a0de0010b1f13a7 Mon Sep 17 00:00:00 2001 From: "ken.lj" Date: Mon, 2 Mar 2020 16:25:39 +0800 Subject: [PATCH 1/2] Revert "[Dubbo-5813]prevent destroyAll method of DubboShutdownHook being invoked twice when using Spring (#5814)" (#5818) This reverts commit 5194791f130eb34d6ed75bc43ef731289a12148a. --- .../org/apache/dubbo/config/bootstrap/DubboBootstrap.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java index 4c6662afa6..7d1fb5ea80 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java @@ -1033,12 +1033,11 @@ public class DubboBootstrap extends GenericEventListener { } public void destroy() { + // for compatibility purpose + DubboShutdownHook.destroyAll(); if (started.compareAndSet(true, false) && destroyed.compareAndSet(false, true)) { - // for compatibility purpose - DubboShutdownHook.destroyAll(); - unregisterServiceInstance(); unexportMetadataService(); unexportServices(); From e72b3b20d7a3d4e0ffb3525b86111412cf525630 Mon Sep 17 00:00:00 2001 From: "ken.lj" Date: Mon, 2 Mar 2020 17:33:13 +0800 Subject: [PATCH 2/2] fix destroyAll called twice. (#5819) fix #5813 --- .../org/apache/dubbo/config/DubboShutdownHook.java | 12 +++++------- .../dubbo/config/bootstrap/DubboBootstrap.java | 1 + 2 files changed, 6 insertions(+), 7 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 b596b40bc4..50f2011563 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 @@ -52,7 +52,7 @@ public class DubboShutdownHook extends Thread { /** * Has it already been destroyed or not? */ - private final AtomicBoolean destroyed = new AtomicBoolean(false); + private static final AtomicBoolean destroyed = new AtomicBoolean(false); private final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension(); @@ -111,17 +111,15 @@ public class DubboShutdownHook extends Thread { * Destroy all the resources, including registries and protocols. */ public void doDestroy() { - if (!destroyed.compareAndSet(false, true)) { - return; - } - // dispatch the DubboDestroyedEvent @since 2.7.5 dispatch(new DubboServiceDestroyedEvent(this)); } public static void destroyAll() { - AbstractRegistryFactory.destroyAll(); - destroyProtocols(); + if (destroyed.compareAndSet(false, true)) { + AbstractRegistryFactory.destroyAll(); + destroyProtocols(); + } } private void dispatch(Event event) { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java index 7d1fb5ea80..ccdaa98583 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java @@ -1038,6 +1038,7 @@ public class DubboBootstrap extends GenericEventListener { if (started.compareAndSet(true, false) && destroyed.compareAndSet(false, true)) { + unregisterServiceInstance(); unexportMetadataService(); unexportServices();