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 2020/07/27 08:16:19 UTC
[dubbo] branch 3.0 updated: add side key to MetadataService
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 51aa427 add side key to MetadataService
51aa427 is described below
commit 51aa4270098722a6100a4d34dfa2be47a9279d5b
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Jul 27 16:13:55 2020 +0800
add side key to MetadataService
---
.../client/ServiceDiscoveryRegistryDirectory.java | 18 +++++++++++++++++-
.../metadata/StandardMetadataServiceURLBuilder.java | 5 ++++-
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
index 9c725ac..f65a927 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java
@@ -44,7 +44,7 @@ import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL
public class ServiceDiscoveryRegistryDirectory<T> extends DynamicDirectory<T> implements NotifyListener {
private static final Logger logger = LoggerFactory.getLogger(ServiceDiscoveryRegistryDirectory.class);
- // Map<url, Invoker> cache service url to invoker mapping.
+ // instance address to invoker mapping.
private volatile Map<String, Invoker<T>> urlInvokerMap; // The initial value is null and the midway may be assigned to null, please use the local variable reference
private ServiceInstancesChangedListener listener;
@@ -54,6 +54,22 @@ public class ServiceDiscoveryRegistryDirectory<T> extends DynamicDirectory<T> im
}
@Override
+ public boolean isAvailable() {
+ if (isDestroyed()) {
+ return false;
+ }
+ Map<String, Invoker<T>> localUrlInvokerMap = urlInvokerMap;
+ if (localUrlInvokerMap != null && localUrlInvokerMap.size() > 0) {
+ for (Invoker<T> invoker : new ArrayList<>(localUrlInvokerMap.values())) {
+ if (invoker.isAvailable()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
public synchronized void notify(List<URL> instanceUrls) {
// Set the context of the address notification thread.
RpcContext.setRpcContext(getConsumerUrl());
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
index a542012..c90eea0 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
@@ -27,8 +27,10 @@ import java.util.List;
import java.util.Map;
import static java.lang.String.valueOf;
+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;
import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_TIMEOUT_VALUE;
import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PROXY_TIMEOUT_KEY;
@@ -70,7 +72,8 @@ public class StandardMetadataServiceURLBuilder implements MetadataServiceURLBuil
.setPort(port)
.setProtocol(protocol)
.setPath(MetadataService.class.getName())
- .addParameter(TIMEOUT_KEY, ConfigurationUtils.get(METADATA_PROXY_TIMEOUT_KEY, DEFAULT_METADATA_TIMEOUT_VALUE));
+ .addParameter(TIMEOUT_KEY, ConfigurationUtils.get(METADATA_PROXY_TIMEOUT_KEY, DEFAULT_METADATA_TIMEOUT_VALUE))
+ .addParameter(SIDE_KEY, CONSUMER);
// add parameters
params.forEach((name, value) -> urlBuilder.addParameter(name, valueOf(value)));