From bdb2d318386f86de7df54c7e496fe4148691c2df Mon Sep 17 00:00:00 2001 From: Wu Zhiguo Date: Fri, 11 Jun 2021 10:55:45 +0800 Subject: [PATCH] [3.0] Fix unsubscribe url == null (#8017) fixes #8009 --- .../apache/dubbo/registry/integration/DynamicDirectory.java | 6 +++--- .../dubbo/registry/integration/RegistryDirectory.java | 4 ++-- .../apache/dubbo/registry/integration/RegistryProtocol.java | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java index 4ed9cf8cd91..5ec17f81b6b 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DynamicDirectory.java @@ -231,15 +231,15 @@ public void destroy() { registry.unregister(getRegisteredConsumerUrl()); } } catch (Throwable t) { - logger.warn("unexpected error when unregister service " + serviceKey + "from registry" + registry.getUrl(), t); + logger.warn("unexpected error when unregister service " + serviceKey + " from registry: " + registry.getUrl(), t); } // unsubscribe. try { - if (getConsumerUrl() != null && registry != null && registry.isAvailable()) { + if (getSubscribeUrl() != null && registry != null && registry.isAvailable()) { registry.unsubscribe(getSubscribeUrl(), this); } } catch (Throwable t) { - logger.warn("unexpected error when unsubscribe service " + serviceKey + "from registry " + registry.getUrl(), t); + logger.warn("unexpected error when unsubscribe service " + serviceKey + " from registry: " + registry.getUrl(), t); } ExtensionLoader addressListenerExtensionLoader = ExtensionLoader.getExtensionLoader(AddressListener.class); diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java index 911ab181ddf..b391768cc2a 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java @@ -101,7 +101,7 @@ public RegistryDirectory(Class serviceType, URL url) { @Override public void subscribe(URL url) { - setConsumerUrl(url); + setSubscribeUrl(url); CONSUMER_CONFIGURATION_LISTENER.addNotifyListener(this); referenceConfigurationListener = new ReferenceConfigurationListener(this, url); registry.subscribe(url, this); @@ -109,7 +109,7 @@ public void subscribe(URL url) { @Override public void unSubscribe(URL url) { - setConsumerUrl(null); + setSubscribeUrl(null); CONSUMER_CONFIGURATION_LISTENER.removeNotifyListener(this); referenceConfigurationListener.stop(); registry.unsubscribe(url, this); diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java index e238af53477..3785cdc6537 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java @@ -503,8 +503,9 @@ protected ClusterInvoker doCreateInvoker(DynamicDirectory directory, C directory.setProtocol(protocol); // all attributes of REFER_KEY Map parameters = new HashMap(directory.getConsumerUrl().getParameters()); - URL urlToRegistry = new ServiceConfigURL(parameters.get(PROTOCOL_KEY) == null ? DUBBO : parameters.get(PROTOCOL_KEY), parameters.remove(REGISTER_IP_KEY), 0, getPath(parameters, type), parameters); - URL consumerURL = directory.getConsumerUrl(); + URL urlToRegistry = new ServiceConfigURL( + parameters.get(PROTOCOL_KEY) == null ? DUBBO : parameters.get(PROTOCOL_KEY), + parameters.remove(REGISTER_IP_KEY), 0, getPath(parameters, type), parameters); if (directory.isShouldRegister()) { directory.setRegisteredConsumerUrl(urlToRegistry); registry.register(directory.getRegisteredConsumerUrl());