You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2020/08/04 03:11:29 UTC
[dubbo] 01/02: enhance url notification
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 29c5945b7416a985a355f5c2e63849d3f27f3418
Author: ken.lj <ke...@gmail.com>
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);