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/06 08:10:13 UTC
[dubbo] branch 3.0-metadata-refactor updated: Make sure instance refresh task can always be started.
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 1448ebe Make sure instance refresh task can always be started.
1448ebe is described below
commit 1448ebe90cfb846389b5f7e3626c7bd698eb7965
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Dec 6 16:09:44 2021 +0800
Make sure instance refresh task can always be started.
---
.../dubbo/config/deploy/DefaultApplicationDeployer.java | 13 +++++++++----
.../dubbo/registry/client/AbstractServiceDiscovery.java | 12 ++++++++++++
.../client/metadata/ServiceInstanceMetadataUtils.java | 8 ++++----
3 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
index a45fb7d..7645b6c 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
@@ -146,8 +146,15 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
dubboShutdownHook.unregister();
}
+ /**
+ * Close registration of instance for pure Consumer process by setting registerConsumer to 'false'
+ * by default is true.
+ */
private boolean isRegisterConsumerInstance() {
Boolean registerConsumer = getApplication().getRegisterConsumer();
+ if (registerConsumer == null) {
+ return true;
+ }
return Boolean.TRUE.equals(registerConsumer);
}
@@ -582,10 +589,8 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
return;
}
- exportMetadataService();
-
- // if register consumer instance or has exported services
- if (isRegisterConsumerInstance() || hasExportedServices()) {
+ if (isRegisterConsumerInstance()) {
+ exportMetadataService();
if (hasPreparedApplicationInstance.compareAndSet(false, true)) {
// register the local ServiceInstance if required
registerServiceInstance();
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 102f14c..ea67de6 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
@@ -34,6 +34,7 @@ import java.util.List;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;
import static org.apache.dubbo.metadata.RevisionResolver.EMPTY_REVISION;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.isValidInstance;
import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;
/**
@@ -77,6 +78,10 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
public synchronized final void register() throws RuntimeException {
this.serviceInstance = createServiceInstance();
+ if (isValidInstance(serviceInstance)) {
+ return;
+ }
+
boolean revisionUpdated = calOrUpdateInstanceRevision();
if (revisionUpdated) {
reportMetadata();
@@ -93,7 +98,14 @@ public abstract class AbstractServiceDiscovery implements ServiceDiscovery {
public synchronized final void update() throws RuntimeException {
if (this.serviceInstance == null) {
this.serviceInstance = createServiceInstance();
+ } else if (!isValidInstance(serviceInstance)) {
+ ServiceInstanceMetadataUtils.customizeInstance(serviceInstance, applicationModel);
}
+
+ if (!isValidInstance(serviceInstance)) {
+ return;
+ }
+
boolean revisionUpdated = calOrUpdateInstanceRevision();
if (revisionUpdated) {
doUpdate();
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 63879a6..361b83d 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
@@ -213,10 +213,6 @@ public class ServiceInstanceMetadataUtils {
return null;
}
- public static boolean isInstanceUpdated(ServiceInstance instance) {
- return "true".equals(instance.getExtendParams().get(INSTANCE_REVISION_UPDATED_KEY));
- }
-
public static void registerMetadataAndInstance(ApplicationModel applicationModel) {
LOGGER.info("Start registering instance address to registry.");
RegistryManager registryManager = applicationModel.getBeanFactory().getBean(RegistryManager.class);
@@ -251,6 +247,10 @@ public class ServiceInstanceMetadataUtils {
});
}
+ public static boolean isValidInstance(ServiceInstance instance) {
+ return instance != null && instance.getHost() != null && instance.getPort() != 0;
+ }
+
/**
* Set the default parameters via the specified {@link URL providerURL}
*