Skip to content

Commit

Permalink
fix multi-registry bug (#8034)
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaoheng1 committed Jun 15, 2021
1 parent 222bf15 commit a7697f8
Showing 1 changed file with 3 additions and 21 deletions.
Expand Up @@ -380,33 +380,15 @@ private T createProxy(Map<String, String> map) {
List<Invoker<?>> invokers = new ArrayList<Invoker<?>>();
URL registryURL = null;
for (URL url : urls) {
Invoker<?> referInvoker = REF_PROTOCOL.refer(interfaceClass, url);
if (shouldCheck()) {
if (referInvoker.isAvailable()) {
invokers.add(referInvoker);
} else {
referInvoker.destroy();
}
} else {
invokers.add(referInvoker);
}
// For multi-registry scenarios, it is not checked whether each referInvoker is available.
// Because this invoker may become available later.
invokers.add(REF_PROTOCOL.refer(interfaceClass, url));

if (UrlUtils.isRegistry(url)) {
registryURL = url; // use last registry url
}
}

if (shouldCheck() && invokers.size() == 0) {
throw new IllegalStateException("Failed to check the status of the service "
+ interfaceName
+ ". No provider available for the service "
+ (group == null ? "" : group + "/")
+ interfaceName +
(version == null ? "" : ":" + version)
+ " from the multi registry cluster"
+ " use dubbo version " + Version.getVersion());
}

if (registryURL != null) { // registry url is available
// for multi-subscription scenario, use 'zone-aware' policy by default
String cluster = registryURL.getParameter(CLUSTER_KEY, ZoneAwareCluster.NAME);
Expand Down

0 comments on commit a7697f8

Please sign in to comment.