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/12/07 07:56:19 UTC

[dubbo] branch 3.0-metadata-refactor updated: fix service discovery

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


The following commit(s) were added to refs/heads/3.0-metadata-refactor by this push:
     new 9a3de0d  fix service discovery
9a3de0d is described below

commit 9a3de0db790845a5ea90615814debc2b48624690
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Dec 7 15:56:00 2021 +0800

    fix service discovery
---
 .../dubbo/registry/client/AbstractServiceDiscovery.java    | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

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 ae2d16d..203f528 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
@@ -59,13 +59,12 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
         this.applicationModel = applicationModel;
         MetadataReportInstance metadataReportInstance = applicationModel.getBeanFactory().getBean(MetadataReportInstance.class);
         metadataType = metadataReportInstance.getMetadataType();
+        this.metadataReport = metadataReportInstance.getMetadataReport(registryURL.getParameter(REGISTRY_CLUSTER_KEY));
 //        if (REMOTE_METADATA_STORAGE_TYPE.equals(metadataReportInstance.getMetadataType())) {
 //            this.metadataReport = metadataReportInstance.getMetadataReport(registryURL.getParameter(REGISTRY_CLUSTER_KEY));
 //        } else {
 //            this.metadataReport = metadataReportInstance.getNopMetadataReport();
 //        }
-        this.metadataReport = metadataReportInstance.getMetadataReport(registryURL.getParameter(REGISTRY_CLUSTER_KEY));
-
     }
 
     public AbstractServiceDiscovery(String serviceName, URL registryURL) {
@@ -78,7 +77,8 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
 
     public synchronized void register() throws RuntimeException {
         this.serviceInstance = createServiceInstance(this.metadataInfo);
-        if (isValidInstance(this.serviceInstance)) {
+        if (!isValidInstance(this.serviceInstance)) {
+            logger.warn("No valid instance found, stop registering instance address to registry.");
             return;
         }
 
@@ -96,6 +96,10 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
      */
     @Override
     public synchronized void update() throws RuntimeException {
+        if (isDestroy) {
+            return;
+        }
+
         if (this.serviceInstance == null) {
             this.serviceInstance = createServiceInstance(this.metadataInfo);
         } else if (!isValidInstance(this.serviceInstance)) {
@@ -108,6 +112,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
 
         boolean revisionUpdated = calOrUpdateInstanceRevision(this.serviceInstance);
         if (revisionUpdated) {
+            logger.info(String.format("Metadata of instance changed, updating instance with revision %s.", this.serviceInstance.getServiceMetadata().getRevision()));
             doUpdate(this.serviceInstance);
         }
     }
@@ -174,7 +179,6 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
     public final void destroy() throws Exception {
         isDestroy = true;
         metaCacheManager.destroy();
-
         doDestroy();
     }
 
@@ -209,6 +213,7 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
     }
 
     protected void doUpdate(ServiceInstance serviceInstance) throws RuntimeException {
+
         this.unregister();
 
         reportMetadata(serviceInstance.getServiceMetadata());
@@ -240,7 +245,6 @@ 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;
             }
             instance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision());