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 2021/11/25 07:29:39 UTC

[dubbo] branch 3.0-metadata-refactor updated (3dcaa3b -> dfc4d74)

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a change to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git.


    from 3dcaa3b  ignore generic service config
     new bae5d8a  fix uts
     new dfc4d74  fix uts

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ...dubbo.registry.client.ServiceInstanceCustomizer |  1 -
 .../org/apache/dubbo/metadata/MetadataInfo.java    | 15 ++++++++---
 .../registry/client/AbstractServiceDiscovery.java  |  1 +
 .../dubbo/registry/client/ServiceDiscovery.java    |  1 -
 .../metadata/ProtocolPortsMetadataCustomizer.java  | 30 +++++++++++++++++-----
 .../ServiceInstanceHostPortCustomizer.java         | 22 ++++++++++++----
 ...dubbo.registry.client.ServiceInstanceCustomizer |  1 +
 .../ProtocolPortsMetadataCustomizerTest.java       | 20 +++++----------
 .../ServiceInstanceHostPortCustomizerTest.java     | 13 +++++-----
 .../nacos/NacosServiceDiscoveryFactoryTest.java    |  5 ++++
 .../registry/nacos/NacosServiceDiscoveryTest.java  |  4 +--
 .../zookeeper/ZookeeperServiceDiscoveryTest.java   | 10 +++++---
 12 files changed, 79 insertions(+), 44 deletions(-)
 rename {dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config => dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client}/metadata/ServiceInstanceHostPortCustomizer.java (81%)
 rename {dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config => dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client}/metadata/ServiceInstanceHostPortCustomizerTest.java (88%)

[dubbo] 02/02: fix uts

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit dfc4d74cc2923ea1da0856618eff26af2020d778
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 25 15:27:24 2021 +0800

    fix uts
---
 .../dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java       | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
index 0db344e..a8d1c11 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
@@ -17,7 +17,9 @@
 package org.apache.dubbo.registry.nacos;
 
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.registry.client.ServiceDiscovery;
+import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -33,6 +35,9 @@ public class NacosServiceDiscoveryFactoryTest {
     @BeforeEach
     public void setup() {
         nacosServiceDiscoveryFactory = new NacosServiceDiscoveryFactory();
+        ApplicationModel applicationModel = ApplicationModel.defaultModel();
+        applicationModel.getApplicationConfigManager().setApplication(new ApplicationConfig("NacosServiceDiscoveryFactoryTest"));
+        nacosServiceDiscoveryFactory.setApplicationModel(applicationModel);
     }
 
     @Test

[dubbo] 01/02: fix uts

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git

commit bae5d8a39f6056bfcde90eb45715fddfa493ad69
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 25 14:54:40 2021 +0800

    fix uts
---
 ...dubbo.registry.client.ServiceInstanceCustomizer |  1 -
 .../org/apache/dubbo/metadata/MetadataInfo.java    | 15 ++++++++---
 .../registry/client/AbstractServiceDiscovery.java  |  1 +
 .../dubbo/registry/client/ServiceDiscovery.java    |  1 -
 .../metadata/ProtocolPortsMetadataCustomizer.java  | 30 +++++++++++++++++-----
 .../ServiceInstanceHostPortCustomizer.java         | 22 ++++++++++++----
 ...dubbo.registry.client.ServiceInstanceCustomizer |  1 +
 .../ProtocolPortsMetadataCustomizerTest.java       | 20 +++++----------
 .../ServiceInstanceHostPortCustomizerTest.java     | 13 +++++-----
 .../registry/nacos/NacosServiceDiscoveryTest.java  |  4 +--
 .../zookeeper/ZookeeperServiceDiscoveryTest.java   | 10 +++++---
 11 files changed, 74 insertions(+), 44 deletions(-)

diff --git a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
index ba0847a..f3cb706 100644
--- a/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
+++ b/dubbo-config/dubbo-config-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
@@ -1,2 +1 @@
-port=org.apache.dubbo.config.metadata.ServiceInstanceHostPortCustomizer
 metadata-url=org.apache.dubbo.config.metadata.MetadataServiceURLParamsMetadataCustomizer
diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
index 8615ac7..5221ed2 100644
--- a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
+++ b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/MetadataInfo.java
@@ -68,9 +68,8 @@ public class MetadataInfo implements Serializable {
     private transient final Map<String, String> extendParams;
     private transient final Map<String, String> instanceParams;
     protected transient AtomicBoolean updated = new AtomicBoolean(false);
-    private transient ConcurrentNavigableMap<String, SortedSet<URL>> subscribedServiceURLs = new ConcurrentSkipListMap<>();
+    private transient ConcurrentNavigableMap<String, SortedSet<URL>> subscribedServiceURLs;
     private transient ConcurrentNavigableMap<String, SortedSet<URL>> exportedServiceURLs;
-    private transient ConcurrentNavigableMap<String, String> serviceDefinitions = new ConcurrentSkipListMap<>();
     private transient ExtensionLoader<MetadataParamsFilter> loader;
 
     public MetadataInfo() {
@@ -111,7 +110,9 @@ public class MetadataInfo implements Serializable {
             return;
         }
         this.services.remove(url.getProtocolServiceKey());
-        removeURL(exportedServiceURLs, url);
+        if (exportedServiceURLs != null) {
+            removeURL(exportedServiceURLs, url);
+        }
 
         updated.compareAndSet(false, true);
     }
@@ -205,11 +206,17 @@ public class MetadataInfo implements Serializable {
         return serviceInfo.toFullString();
     }
 
-    public void addSubscribedURL(URL url) {
+    public synchronized void addSubscribedURL(URL url) {
+        if (subscribedServiceURLs == null) {
+            subscribedServiceURLs = new ConcurrentSkipListMap<>();
+        }
         addURL(subscribedServiceURLs, url);
     }
 
     public boolean removeSubscribedURL(URL url) {
+        if (subscribedServiceURLs == null) {
+            return true;
+        }
         return removeURL(subscribedServiceURLs, url);
     }
 
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
index db84651..aa13626 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
@@ -221,6 +221,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
         String newRevision = metadataInfo.calAndGetRevision();
         if (!newRevision.equals(existingInstanceRevision)) {
             if (EMPTY_REVISION.equals(newRevision)) {
+                logger.warn("No interface in metadata, will not register/update instance.");
                 return false;
             }
             serviceInstance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision());
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
index 9972e3c..e9867cc 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
@@ -29,7 +29,6 @@ import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_DELAY_N
 
 /**
  * Defines the common operations of Service Discovery, extended and loaded by ServiceDiscoveryFactory
- *
  */
 public interface ServiceDiscovery extends RegistryService, Prioritized {
 
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
index 96d7e23..f87431b 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java
@@ -16,14 +16,20 @@
  */
 package org.apache.dubbo.registry.client.metadata;
 
-import org.apache.dubbo.metadata.MetadataService;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.utils.CollectionUtils;
+import org.apache.dubbo.metadata.MetadataInfo;
+import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.registry.client.ServiceInstance;
 import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;
 import org.apache.dubbo.rpc.Protocol;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
 
 import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setEndpoints;
 
@@ -37,14 +43,24 @@ public class ProtocolPortsMetadataCustomizer implements ServiceInstanceCustomize
 
     @Override
     public void customize(ServiceInstance serviceInstance, ApplicationModel applicationModel) {
-        MetadataService metadataService = applicationModel.getBeanFactory().getBean(MetadataService.class);
+        MetadataInfo metadataInfo = ((DefaultServiceInstance)serviceInstance).getServiceMetadata();
+        if (metadataInfo == null || CollectionUtils.isEmptyMap(metadataInfo.getExportedServiceURLs())) {
+            return;
+        }
 
         Map<String, Integer> protocols = new HashMap<>();
-        metadataService.getExportedServiceURLs()
-                .forEach(url -> {
-                    // TODO, same protocol listen on different ports will override with each other.
-                    protocols.put(url.getProtocol(), url.getPort());
-                });
+        Set<URL> urls = new HashSet<>();
+        Map<String, SortedSet<URL>> exportedURLS = metadataInfo.getExportedServiceURLs();
+        for (Map.Entry<String, SortedSet<URL>> entry : exportedURLS.entrySet()) {
+            if (entry.getValue() != null) {
+                urls.addAll(entry.getValue());
+            }
+        }
+
+        urls.forEach(url -> {
+            // TODO, same protocol listen on different ports will override with each other.
+            protocols.put(url.getProtocol(), url.getPort());
+        });
 
         if (protocols.size() > 0) {// set endpoints only for multi-protocol scenario
             setEndpoints(serviceInstance, protocols);
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizer.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizer.java
similarity index 81%
rename from dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizer.java
rename to dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizer.java
index fcb7813..9f3f870 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizer.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizer.java
@@ -14,19 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.config.metadata;
+package org.apache.dubbo.registry.client.metadata;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.metadata.MetadataService;
+import org.apache.dubbo.metadata.MetadataInfo;
 import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.registry.client.ServiceInstance;
 import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 
+import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
+import java.util.SortedSet;
 
 /**
  * The {@link ServiceInstanceCustomizer} to customize the {@link ServiceInstance#getPort() port} of service instance.
@@ -37,16 +40,25 @@ public class ServiceInstanceHostPortCustomizer implements ServiceInstanceCustomi
 
     @Override
     public void customize(ServiceInstance serviceInstance, ApplicationModel applicationModel) {
-
         if (serviceInstance.getPort() > 0) {
             return;
         }
 
-        MetadataService metadataService = applicationModel.getBeanFactory().getBean(MetadataService.class);
+        MetadataInfo metadataInfo = ((DefaultServiceInstance)serviceInstance).getServiceMetadata();
+        if (metadataInfo == null || CollectionUtils.isEmptyMap(metadataInfo.getExportedServiceURLs())) {
+            return;
+        }
 
         String host = null;
         int port = -1;
-        Set<URL> urls = metadataService.getExportedServiceURLs();
+        Set<URL> urls = new HashSet<>();
+        Map<String, SortedSet<URL>> exportedURLS = metadataInfo.getExportedServiceURLs();
+        for (Map.Entry<String, SortedSet<URL>> entry : exportedURLS.entrySet()) {
+            if (entry.getValue() != null) {
+                urls.addAll(entry.getValue());
+            }
+        }
+
         if (CollectionUtils.isNotEmpty(urls)) {
             String preferredProtocol = applicationModel.getCurrentConfig().getProtocol();
             if (preferredProtocol != null) {
diff --git a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer b/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
index e11c6e4..a5b398a 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
+++ b/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer
@@ -1,2 +1,3 @@
 protocol-ports=org.apache.dubbo.registry.client.metadata.ProtocolPortsMetadataCustomizer
 instance-metadata=org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataCustomizer
+port=org.apache.dubbo.registry.client.metadata.ServiceInstanceHostPortCustomizer
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
index b6e8d22..166df22 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizerTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.registry.client.metadata;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
+import org.apache.dubbo.metadata.MetadataInfo;
 import org.apache.dubbo.metadata.MetadataService;
 import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -32,9 +33,7 @@ import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
 import java.io.IOException;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.ENDPOINTS;
 import static org.hamcrest.Matchers.equalTo;
@@ -42,7 +41,6 @@ import static org.hamcrest.Matchers.hasItem;
 import static org.hamcrest.Matchers.hasProperty;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.Mockito.when;
 
 public class ProtocolPortsMetadataCustomizerTest {
     private static final Gson gson = new Gson();
@@ -69,17 +67,13 @@ public class ProtocolPortsMetadataCustomizerTest {
             "REGISTRY_CLUSTER=registry1&anyhost=true&application=demo-provider2&delay=5000&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&group=greeting&interface=org.apache.dubbo.demo.GreetingService&metadata-type=remote&methods=hello&pid=55805&release=&revision=1.0.0&service-name-mapping=true&side=provider&timeout=5000&timestamp=1630229110058&version=1.0.0");
         URL triURL = URL.valueOf("tri://30.10.104.63:50332/org.apache.dubbo.demo.GreetingService?" +
             "REGISTRY_CLUSTER=registry1&anyhost=true&application=demo-provider2&delay=5000&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&group=greeting&interface=org.apache.dubbo.demo.GreetingService&metadata-type=remote&methods=hello&pid=55805&release=&revision=1.0.0&service-name-mapping=true&side=provider&timeout=5000&timestamp=1630229110058&version=1.0.0");
-        Set<URL> urls = new HashSet<>();
-        urls.add(dubboUrl);
-        urls.add(triURL);
 
-        mockedMetadataService = Mockito.mock(MetadataService.class);
+        MetadataInfo metadataInfo = new MetadataInfo();
+        metadataInfo.addService(dubboUrl);
+        metadataInfo.addService(triURL);
+        instance.setServiceMetadata(metadataInfo);
 
-        mockedApplicationModel = Mockito.mock(ApplicationModel.class);
-        mockedBeanFactory = Mockito.mock(ScopeBeanFactory.class);
-        Mockito.when(mockedApplicationModel.getBeanFactory()).thenReturn(mockedBeanFactory);
-        Mockito.when(mockedBeanFactory.getBean(MetadataService.class)).thenReturn(mockedMetadataService);
-        when(mockedMetadataService.getExportedServiceURLs()).thenReturn(urls);
+        mockedMetadataService = Mockito.mock(MetadataService.class);
     }
 
     @AfterEach
@@ -90,7 +84,7 @@ public class ProtocolPortsMetadataCustomizerTest {
     @Test
     public void test() {
         ProtocolPortsMetadataCustomizer customizer = new ProtocolPortsMetadataCustomizer();
-        customizer.customize(instance, mockedApplicationModel);
+        customizer.customize(instance, ApplicationModel.defaultModel());
         String endpoints = instance.getMetadata().get(ENDPOINTS);
         assertNotNull(endpoints);
         List<DefaultServiceInstance.Endpoint> endpointList = gson.fromJson(endpoints, new TypeToken<List<DefaultServiceInstance.Endpoint>>(){}.getType());
diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizerTest.java
similarity index 88%
rename from dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizerTest.java
rename to dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizerTest.java
index 549bb37..0957085 100644
--- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/metadata/ServiceInstanceHostPortCustomizerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/metadata/ServiceInstanceHostPortCustomizerTest.java
@@ -14,11 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.config.metadata;
+package org.apache.dubbo.registry.client.metadata;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.beans.factory.ScopeBeanFactory;
 import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metadata.MetadataInfo;
 import org.apache.dubbo.metadata.MetadataService;
 import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -28,8 +29,6 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
-import java.util.HashSet;
-import java.util.Set;
 import java.util.concurrent.ExecutionException;
 
 import static org.mockito.Mockito.doReturn;
@@ -66,16 +65,16 @@ class ServiceInstanceHostPortCustomizerTest {
         // when(applicationModel.getCurrentConfig()).thenReturn(applicationConfig);
         doReturn(applicationConfig).when(applicationModel).getCurrentConfig();
         DefaultServiceInstance serviceInstance1 = new DefaultServiceInstance("without-preferredProtocol", applicationModel);
-        Set<URL> urls = new HashSet<>();
-        urls.add(URL.valueOf("tri://127.1.1.1:50052/org.apache.dubbo.demo.GreetingService"));
-        when(metadataService.getExportedServiceURLs()).thenReturn(urls);
+        MetadataInfo metadataInfo = new MetadataInfo();
+        metadataInfo.addService(URL.valueOf("tri://127.1.1.1:50052/org.apache.dubbo.demo.GreetingService"));
+        serviceInstance1.setServiceMetadata(metadataInfo);
         serviceInstanceHostPortCustomizer.customize(serviceInstance1, applicationModel);
         Assertions.assertEquals("127.1.1.1", serviceInstance1.getHost());
         Assertions.assertEquals(50052, serviceInstance1.getPort());
 
         // pick the preferredProtocol
         applicationConfig.setProtocol("tri");
-        urls.add(URL.valueOf("dubbo://127.1.2.3:20889/org.apache.dubbo.demo.HelloService"));
+        metadataInfo.addService(URL.valueOf("dubbo://127.1.2.3:20889/org.apache.dubbo.demo.HelloService"));
         serviceInstanceHostPortCustomizer.customize(serviceInstance1, applicationModel);
         Assertions.assertEquals("127.1.1.1", serviceInstance1.getHost());
         Assertions.assertEquals(50052, serviceInstance1.getPort());
diff --git a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
index 23b15d8..61039b0 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
@@ -115,9 +115,9 @@ public class NacosServiceDiscoveryTest {
 
     @Test
     public void testDoUnRegister() throws NacosException {
-        DefaultServiceInstance serviceInstance = createServiceInstance(SERVICE_NAME, LOCALHOST, NetUtils.getAvailablePort());
         // register
-        nacosServiceDiscovery.doRegister(serviceInstance);
+        nacosServiceDiscovery.register(URL.valueOf("dubbo://10.0.2.3:20880/DemoService?interface=DemoService"));
+        nacosServiceDiscovery.register();
 
         List<Instance> instances = new ArrayList<>();
         Instance instance1 = new Instance();
diff --git a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
index 44f143b..dd7c4c5 100644
--- a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
+++ b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
@@ -37,7 +37,6 @@ import java.util.concurrent.CountDownLatch;
 
 import static java.util.Arrays.asList;
 import static org.apache.dubbo.common.utils.NetUtils.getAvailablePort;
-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.INSTANCE_REVISION_UPDATED_KEY;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
@@ -92,10 +91,13 @@ public class ZookeeperServiceDiscoveryTest {
         });
 
         discovery.register();
-
         latch.await();
-        
         List<ServiceInstance> serviceInstances = discovery.getInstances(SERVICE_NAME);
+        assertEquals(0, serviceInstances.size());
+
+        discovery.register(URL.valueOf("dubbo://1.1.2.3:20880/DemoService"));
+        discovery.register();
+        serviceInstances = discovery.getInstances(SERVICE_NAME);
 
         DefaultServiceInstance serviceInstance = (DefaultServiceInstance)discovery.getLocalInstance();
         assertTrue(serviceInstances.contains(serviceInstance));
@@ -104,8 +106,8 @@ public class ZookeeperServiceDiscoveryTest {
         Map<String, String> metadata = new HashMap<>();
         metadata.put("message", "Hello,World");
         serviceInstance.setMetadata(metadata);
-        serviceInstance.getExtendParams().put(INSTANCE_REVISION_UPDATED_KEY, "true");
 
+        discovery.register(URL.valueOf("dubbo://1.1.2.3:20880/DemoService1"));
         discovery.update();
 
         serviceInstances = discovery.getInstances(SERVICE_NAME);