diff --git a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java index 809f910e14..9402e0be68 100644 --- a/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java +++ b/dubbo-registry/src/main/java/com/alibaba/dubbo/registry/support/RegistryDirectory.java @@ -60,8 +60,6 @@ public class RegistryDirectory extends AbstractDirectory implements Notify private volatile boolean forbidden = false; - private volatile boolean destroyed = false; - private final String serviceKey; private final Class serviceType; @@ -104,7 +102,7 @@ public class RegistryDirectory extends AbstractDirectory implements Notify if(destroyed) { return; } - destroyed = true; + super.destroy(); // unsubscribe. try { if(registry != null && registry.isAvailable()) { @@ -424,6 +422,7 @@ public class RegistryDirectory extends AbstractDirectory implements Notify } public boolean isAvailable() { + if (destroyed) return false; Map> map = urlInvokerMap; if (map != null && map.size() > 0) { for (Invoker invoker : new ArrayList>(map.values())) {