This is an automated email from the ASF dual-hosted git repository. liujun pushed a commit to branch 3.0 in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 9f13240835eb71b2ec2355821273921d49ab223b Author: ken.lj <[email protected]> AuthorDate: Mon Jul 27 21:39:09 2020 +0800 enhance url notification --- .../dubbo/registry/client/InstanceAddressURL.java | 6 ++++++ .../event/listener/ServiceInstancesChangedListener.java | 17 ++++++++++------- .../metadata/ServiceInstanceMetadataCustomizer.java | 4 +++- .../client/metadata/ServiceInstanceMetadataUtils.java | 3 +++ 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java index f4ec3fe..5159cfc 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java @@ -365,6 +365,12 @@ public class InstanceAddressURL extends URL { @Override public String toString() { + if (instance == null) { + return "{}"; + } + if (metadataInfo == null) { + return instance.toString(); + } return instance.toString() + metadataInfo.toString(); } } diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java index 6ff7c2a..cb43cee 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java @@ -178,15 +178,18 @@ public class ServiceInstancesChangedListener implements ConditionalEventListener private void notifyAddressChanged() { listeners.forEach((key, notifyListener) -> { //FIXME, group wildcard match - List<URL> urls = serviceUrls.get(key); - if (CollectionUtils.isEmpty(urls)) { - urls = new ArrayList<>(); - urls.add(new InstanceAddressURL()); - } - notifyListener.notify(urls); + notifyListener.notify(toUrlsWithEmpty(serviceUrls.get(key))); }); } + private List<URL> toUrlsWithEmpty(List<URL> urls) { + if (CollectionUtils.isEmpty(urls)) { + urls = new ArrayList<>(); + urls.add(new InstanceAddressURL()); + } + return urls; + } + public void addListener(String serviceKey, NotifyListener listener) { this.listeners.put(serviceKey, listener); } @@ -196,7 +199,7 @@ public class ServiceInstancesChangedListener implements ConditionalEventListener } public List<URL> getUrls(String serviceKey) { - return serviceUrls.get(serviceKey); + return toUrlsWithEmpty(serviceUrls.get(serviceKey)); } /** diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java index 8d9824a..76fb765 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java @@ -78,7 +78,9 @@ public class ServiceInstanceMetadataCustomizer implements ServiceInstanceCustomi serviceInstance.getMetadata().putAll(allParams); } else { for (String p : included) { - serviceInstance.getMetadata().put(p, allParams.get(p)); + if (allParams.get(p) != null) { + serviceInstance.getMetadata().put(p, allParams.get(p)); + } } } }); diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java index 0f0cf3c..0881e0c 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java @@ -241,6 +241,9 @@ public class ServiceInstanceMetadataUtils { public static void calInstanceRevision(ServiceDiscovery serviceDiscovery, ServiceInstance instance) { String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY); + if (registryCluster == null) { + return; + } MetadataInfo metadataInfo = WritableMetadataService.getDefaultExtension().getMetadataInfos().get(registryCluster); if (metadataInfo != null) { String existingInstanceRevision = instance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);
