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());