You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by vi...@apache.org on 2019/08/14 10:28:06 UTC
[dubbo] branch cloud-native updated: fix review issue and refactor
metadata
This is an automated email from the ASF dual-hosted git repository.
victory pushed a commit to branch cloud-native
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/cloud-native by this push:
new 2a30b22 fix review issue and refactor metadata
2a30b22 is described below
commit 2a30b22c9c0987a355358725e431f5c7b4ed8d8a
Author: cvictory <sh...@gmail.com>
AuthorDate: Wed Aug 14 18:27:16 2019 +0800
fix review issue and refactor metadata
---
.../org/apache/dubbo/bootstrap/DubboBootstrap.java | 3 +-
.../bootstrap/DubboServiceConsumerBootstrap.java | 6 ++
.../bootstrap/DubboServiceProviderBootstrap.java | 10 ++-
.../org/apache/dubbo/common/lang/Prioritized.java | 6 +-
.../identifier/ServiceMetadataIdentifier.java | 4 +-
.../report/support/AbstractMetadataReport.java | 2 +-
.../store/InMemoryWritableMetadataService.java | 2 +-
.../store/RemoteWritableMetadataService.java | 2 +
.../RemoteWritableMetadataServiceDelegate.java | 95 ++++++++++++++++++++++
...g.apache.dubbo.metadata.WritableMetadataService | 2 +-
...ExportedServicesRevisionMetadataCustomizer.java | 4 +-
...MetadataServiceURLParamsMetadataCustomizer.java | 4 +-
.../metadata/RefreshServiceMetadataCustomizer.java | 2 +-
...bscribedServicesRevisionMetadataCustomizer.java | 5 +-
.../proxy/BaseMetadataServiceProxyFactory.java | 2 +-
.../metadata/proxy/RemoteMetadataServiceProxy.java | 6 +-
.../zookeeper/curator/CuratorZookeeperClient.java | 2 +-
17 files changed, 136 insertions(+), 21 deletions(-)
diff --git a/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java b/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java
index 8a4cc22..db5963a 100644
--- a/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java
+++ b/dubbo-bootstrap/src/main/java/org/apache/dubbo/bootstrap/DubboBootstrap.java
@@ -81,6 +81,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.METADATA_REMOTE;
import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;
import static org.apache.dubbo.config.context.ConfigManager.getInstance;
+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.MEATADATA_STORED_TYPE_KEY;
import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;
/**
@@ -792,7 +793,7 @@ public class DubboBootstrap implements Lifecycle {
private ServiceInstance initServiceInstance(String serviceName, String host, int port, String metadataType) {
this.serviceInstance = new DefaultServiceInstance(serviceName, host, port);
- this.serviceInstance.getMetadata().put(METADATA_KEY, metadataType);
+ this.serviceInstance.getMetadata().put(MEATADATA_STORED_TYPE_KEY, metadataType);
return this.serviceInstance;
}
diff --git a/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceConsumerBootstrap.java b/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceConsumerBootstrap.java
index fe216ab..cc0e16b 100644
--- a/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceConsumerBootstrap.java
+++ b/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceConsumerBootstrap.java
@@ -17,10 +17,16 @@
package org.apache.dubbo.bootstrap;
import org.apache.dubbo.bootstrap.rest.UserService;
+import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetadataReportConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.context.ConfigManager;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
+
/**
* Dubbo Provider Bootstrap
*
diff --git a/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceProviderBootstrap.java b/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceProviderBootstrap.java
index 9bafe00..d0b7e4a 100644
--- a/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceProviderBootstrap.java
+++ b/dubbo-bootstrap/src/test/java/org/apache/dubbo/bootstrap/DubboServiceProviderBootstrap.java
@@ -18,12 +18,17 @@ package org.apache.dubbo.bootstrap;
import org.apache.dubbo.bootstrap.rest.UserService;
import org.apache.dubbo.bootstrap.rest.UserServiceImpl;
+import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetadataReportConfig;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
/**
* Dubbo Provider Bootstrap
@@ -61,9 +66,10 @@ public class DubboServiceProviderBootstrap {
userService.setProtocol(restProtocol);
// userService.setRegistries(Arrays.asList(interfaceRegistry, serviceRegistry));
-
+ ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-provider-demo");
+ applicationConfig.setMetadata("remote");
new DubboBootstrap()
- .application("dubbo-provider-demo")
+ .application(applicationConfig)
// Zookeeper in service registry type
// .registry("zookeeper", builder -> builder.address("zookeeper://127.0.0.1:2181?registry.type=service"))
// Nacos
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/lang/Prioritized.java b/dubbo-common/src/main/java/org/apache/dubbo/common/lang/Prioritized.java
index b25ff48..98bf3f8 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/lang/Prioritized.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/lang/Prioritized.java
@@ -54,6 +54,10 @@ public interface Prioritized extends Comparable<Prioritized> {
* The minimum priority
*/
int MIN_PRIORITY = Integer.MAX_VALUE;
+ /**
+ * Normal Priority
+ */
+ int NORMAL_PRIORITY = 0;
/**
* Get the priority
@@ -61,7 +65,7 @@ public interface Prioritized extends Comparable<Prioritized> {
* @return the default is {@link #MIN_PRIORITY minimum one}
*/
default int getPriority() {
- return MIN_PRIORITY;
+ return NORMAL_PRIORITY;
}
@Override
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java
index a04492a..65c7b4e 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java
@@ -22,12 +22,13 @@ public class ServiceMetadataIdentifier extends BaseServiceMetadataIdentifier {
public ServiceMetadataIdentifier() {
}
- public ServiceMetadataIdentifier(String serviceInterface, String version, String group, String side, String revision) {
+ public ServiceMetadataIdentifier(String serviceInterface, String version, String group, String side, String revision, String protocol) {
this.serviceInterface = serviceInterface;
this.version = version;
this.group = group;
this.side = side;
this.revision = revision;
+ this.protocol = protocol;
}
@@ -36,7 +37,6 @@ public class ServiceMetadataIdentifier extends BaseServiceMetadataIdentifier {
this.version = url.getParameter(VERSION_KEY);
this.group = url.getParameter(GROUP_KEY);
this.side = url.getParameter(SIDE_KEY);
- this.revision = (url.getParameter(REVISION_KEY));
this.protocol = url.getProtocol();
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java
index f70e13e..7f46eef 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java
@@ -296,7 +296,7 @@ public abstract class AbstractMetadataReport implements MetadataReport {
if (syncReport) {
doSaveMetadata(metadataIdentifier, url);
} else {
- reportCacheExecutor.execute(() -> doSaveMetadata(new ServiceMetadataIdentifier(url), url));
+ reportCacheExecutor.execute(() -> doSaveMetadata(metadataIdentifier, url));
}
}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataService.java
index ce8fea5..7c34e67 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataService.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/InMemoryWritableMetadataService.java
@@ -58,7 +58,7 @@ public class InMemoryWritableMetadataService extends BaseWritableMetadataService
@Override
public SortedSet<String> getSubscribedURLs() {
- return getAllUnmodifiableServiceURLs(subscribedServiceURLs);
+ return super.getSubscribedURLs();
}
@Override
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataService.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataService.java
index a2aa24f..90181ee 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataService.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataService.java
@@ -129,6 +129,7 @@ public class RemoteWritableMetadataService extends BaseWritableMetadataService i
public boolean unexportURL(URL url) {
ServiceMetadataIdentifier metadataIdentifier = new ServiceMetadataIdentifier(url);
metadataIdentifier.setRevision(exportedRevision);
+ metadataIdentifier.setProtocol(url.getProtocol());
return throwableAction(getMetadataReport()::removeServiceMetadata, metadataIdentifier);
}
@@ -174,6 +175,7 @@ public class RemoteWritableMetadataService extends BaseWritableMetadataService i
// refresh revision in urls
ServiceMetadataIdentifier metadataIdentifier = new ServiceMetadataIdentifier(url);
metadataIdentifier.setRevision(exportedRevision);
+ metadataIdentifier.setProtocol(url.getProtocol());
boolean tmpResult = throwableAction(getMetadataReport()::saveServiceMetadata, metadataIdentifier, url);
if (!tmpResult) result = tmpResult;
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataServiceDelegate.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataServiceDelegate.java
new file mode 100644
index 0000000..3885429
--- /dev/null
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/store/RemoteWritableMetadataServiceDelegate.java
@@ -0,0 +1,95 @@
+package org.apache.dubbo.metadata.store;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.metadata.WritableMetadataService;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.function.BiFunction;
+
+/**
+ * 2019-08-14
+ *
+ * @since 2.7.5
+ */
+public class RemoteWritableMetadataServiceDelegate implements WritableMetadataService {
+ List<WritableMetadataService> metadataServiceList = new ArrayList<>(2);
+
+ public RemoteWritableMetadataServiceDelegate() {
+ metadataServiceList.add(WritableMetadataService.getDefaultExtension());
+ metadataServiceList.add(new RemoteWritableMetadataService());
+ }
+
+ private WritableMetadataService getInMemoryWritableMetadataService() {
+ for (WritableMetadataService writableMetadataService : metadataServiceList) {
+ if (writableMetadataService instanceof InMemoryWritableMetadataService) {
+ return writableMetadataService;
+ }
+ }
+ return metadataServiceList.get(0);
+ }
+
+ @Override
+ public boolean exportURL(URL url) {
+ return doFunction(WritableMetadataService::exportURL, url);
+ }
+
+ @Override
+ public boolean unexportURL(URL url) {
+ return doFunction(WritableMetadataService::unexportURL, url);
+ }
+
+ @Override
+ public boolean subscribeURL(URL url) {
+ return doFunction(WritableMetadataService::subscribeURL, url);
+ }
+
+ @Override
+ public boolean unsubscribeURL(URL url) {
+ return doFunction(WritableMetadataService::unsubscribeURL, url);
+ }
+
+ @Override
+ public boolean refreshMetadata(String exportedRevision, String subscribedRevision) {
+ boolean result = true;
+ for (WritableMetadataService writableMetadataService : metadataServiceList) {
+ result &= writableMetadataService.refreshMetadata(exportedRevision, subscribedRevision);
+ }
+ return result;
+ }
+
+ @Override
+ public void publishServiceDefinition(URL providerUrl) {
+ for (WritableMetadataService writableMetadataService : metadataServiceList) {
+ writableMetadataService.publishServiceDefinition(providerUrl);
+ }
+ }
+
+ @Override
+ public SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol) {
+ return getInMemoryWritableMetadataService().getExportedURLs(serviceInterface, group, version, protocol);
+ }
+ @Override
+ public SortedSet<String> getSubscribedURLs() {
+ return getInMemoryWritableMetadataService().getSubscribedURLs();
+ }
+
+ @Override
+ public String getServiceDefinition(String interfaceName, String version, String group) {
+ return getInMemoryWritableMetadataService().getServiceDefinition(interfaceName, version, group);
+ }
+
+ @Override
+ public String getServiceDefinition(String serviceKey) {
+ return getInMemoryWritableMetadataService().getServiceDefinition(serviceKey);
+ }
+
+ private boolean doFunction(BiFunction<WritableMetadataService, URL, Boolean> func, URL url) {
+ boolean result = true;
+ for (WritableMetadataService writableMetadataService : metadataServiceList) {
+ result &= func.apply(writableMetadataService, url);
+ }
+ return result;
+ }
+}
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService b/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
index cbf9324..bf1b63c 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService
@@ -1,2 +1,2 @@
default=org.apache.dubbo.metadata.store.InMemoryWritableMetadataService
-remote=org.apache.dubbo.metadata.store.RemoteWritableMetadataService
\ No newline at end of file
+remote=org.apache.dubbo.metadata.store.RemoteWritableMetadataServiceDelegate
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ExportedServicesRevisionMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ExportedServicesRevisionMetadataCustomizer.java
index 4887457..31dac6b 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ExportedServicesRevisionMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ExportedServicesRevisionMetadataCustomizer.java
@@ -29,8 +29,8 @@ import java.util.SortedSet;
import static java.lang.String.valueOf;
import static java.util.Objects.hash;
-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_KEY;
+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.MEATADATA_STORED_TYPE_KEY;
/**
* The customizer to a add the metadata that the reversion of Dubbo exported services calculates.
@@ -49,7 +49,7 @@ public class ExportedServicesRevisionMetadataCustomizer extends ServiceInstanceM
@Override
protected String buildMetadataValue(ServiceInstance serviceInstance) {
WritableMetadataService writableMetadataService = WritableMetadataService.getExtension(
- serviceInstance.getMetadata().get(METADATA_KEY)
+ serviceInstance.getMetadata().get(MEATADATA_STORED_TYPE_KEY)
);
SortedSet<String> exportedURLs = writableMetadataService.getExportedURLs();
Object[] data = exportedURLs.stream()
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
index cf5cc51..b1baa65 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java
@@ -24,8 +24,8 @@ import org.apache.dubbo.registry.client.ServiceInstanceMetadataCustomizer;
import java.util.SortedSet;
-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
import static org.apache.dubbo.metadata.MetadataService.toURLs;
+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.MEATADATA_STORED_TYPE_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URL_PARAMS_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceParameter;
@@ -47,7 +47,7 @@ public class MetadataServiceURLParamsMetadataCustomizer extends ServiceInstanceM
public String buildMetadataValue(ServiceInstance serviceInstance) {
WritableMetadataService writableMetadataService = WritableMetadataService.getExtension(
- serviceInstance.getMetadata().get(METADATA_KEY)
+ serviceInstance.getMetadata().get(MEATADATA_STORED_TYPE_KEY)
);
String serviceInterface = MetadataService.class.getName();
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java
index 5681b98..5fd089e 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/RefreshServiceMetadataCustomizer.java
@@ -20,7 +20,7 @@ import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataU
public class RefreshServiceMetadataCustomizer implements ServiceInstanceCustomizer {
public int getPriority() {
- return MAX_PRIORITY;
+ return MIN_PRIORITY;
}
@Override
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/SubscribedServicesRevisionMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/SubscribedServicesRevisionMetadataCustomizer.java
index 7197e10..ca89b26 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/SubscribedServicesRevisionMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/SubscribedServicesRevisionMetadataCustomizer.java
@@ -29,8 +29,7 @@ import java.util.SortedSet;
import static java.lang.String.valueOf;
import static java.util.Objects.hash;
-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_KEY;
+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.MEATADATA_STORED_TYPE_KEY;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.SUBSCRIBER_SERVICES_REVISION_KEY;
/**
@@ -50,7 +49,7 @@ public class SubscribedServicesRevisionMetadataCustomizer extends ServiceInstanc
@Override
protected String buildMetadataValue(ServiceInstance serviceInstance) {
WritableMetadataService writableMetadataService = WritableMetadataService.getExtension(
- serviceInstance.getMetadata().get(METADATA_KEY)
+ serviceInstance.getMetadata().get(MEATADATA_STORED_TYPE_KEY)
);
SortedSet<String> subscribedURLs = writableMetadataService.getSubscribedURLs();
Object[] data = subscribedURLs.stream()
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/BaseMetadataServiceProxyFactory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/BaseMetadataServiceProxyFactory.java
index b56e99b..14405bf 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/BaseMetadataServiceProxyFactory.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/BaseMetadataServiceProxyFactory.java
@@ -17,7 +17,7 @@ abstract class BaseMetadataServiceProxyFactory implements MetadataServiceProxyFa
public final MetadataService getProxy(ServiceInstance serviceInstance) {
return proxies.computeIfAbsent(serviceInstance.getServiceName() + "##" +
- serviceInstance.getMetadata().getOrDefault(ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_KEY, ""), id -> createProxy(serviceInstance));
+ ServiceInstanceMetadataUtils.getExportedServicesRevision(serviceInstance), id -> createProxy(serviceInstance));
}
protected abstract MetadataService createProxy(ServiceInstance serviceInstance);
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/RemoteMetadataServiceProxy.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/RemoteMetadataServiceProxy.java
index a67368b..44c7144 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/RemoteMetadataServiceProxy.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/proxy/RemoteMetadataServiceProxy.java
@@ -34,7 +34,8 @@ public class RemoteMetadataServiceProxy implements MetadataService {
public RemoteMetadataServiceProxy(ServiceInstance serviceInstance) {
this.serviceName = serviceInstance.getServiceName();
- this.revision = serviceInstance.getMetadata().getOrDefault(ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_KEY, "");
+ this.revision = serviceInstance.getMetadata()
+ .getOrDefault(ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_KEY, "");
}
@Override
@@ -45,7 +46,8 @@ public class RemoteMetadataServiceProxy implements MetadataService {
// TODO, protocol should be used
@Override
public SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol) {
- return toSortedStrings(getMetadataReport().getExportedURLs(new ServiceMetadataIdentifier(serviceInterface, group, version, PROVIDER_SIDE, revision)));
+ return toSortedStrings(getMetadataReport().getExportedURLs(
+ new ServiceMetadataIdentifier(serviceInterface, group, version, PROVIDER_SIDE, revision, protocol)));
}
private static SortedSet<String> toSortedStrings(Collection<String> values) {
diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
index 75aa256..2df67de 100644
--- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
+++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java
@@ -149,7 +149,7 @@ public class CuratorZookeeperClient extends AbstractZookeeperClient<CuratorZooke
@Override
public void delete(String path) {
try {
- client.delete().forPath(path);
+ client.delete().deletingChildrenIfNeeded().forPath(path);
} catch (NoNodeException e) {
} catch (Exception e) {
throw new IllegalStateException(e.getMessage(), e);