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/05/29 07:24:44 UTC
[dubbo] branch master updated: support multiple address format
(#6209)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 5a827df support multiple address format (#6209)
5a827df is described below
commit 5a827df766f98afcaa723bb24231c3505bd7dcb8
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri May 29 15:24:29 2020 +0800
support multiple address format (#6209)
<dubbo:registry address="zookeeper://127.0.0.1:2181?backup=127.0.0.1:2181|zookeeper://127.0.0.1:2183"/>
---
.../src/main/java/org/apache/dubbo/config/RegistryConfig.java | 5 ++++-
.../org/apache/dubbo/config/bootstrap/DubboBootstrap.java | 11 ++++++++++-
.../org/apache/dubbo/config/utils/ConfigValidationUtils.java | 5 ++++-
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
index 3b868fe..7a8e304 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
@@ -25,6 +25,7 @@ import java.util.Map;
import static org.apache.dubbo.common.constants.CommonConstants.EXTRA_KEYS_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;
+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
import static org.apache.dubbo.config.Constants.REGISTRIES_SUFFIX;
/**
@@ -216,7 +217,9 @@ public class RegistryConfig extends AbstractConfig {
// updateIdIfAbsent(url.getProtocol());
updateProtocolIfAbsent(url.getProtocol());
updatePortIfAbsent(url.getPort());
- updateParameters(url.getParameters());
+ Map<String, String> params = url.getParameters();
+ params.remove(BACKUP_KEY);
+ updateParameters(params);
} catch (Exception ignored) {
}
}
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
index eee642b..cd92fe5 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/DubboBootstrap.java
@@ -91,6 +91,7 @@ import static java.util.concurrent.Executors.newSingleThreadExecutor;
import static org.apache.dubbo.common.config.ConfigurationUtils.parseProperties;
import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration;
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;
+import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;
import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;
import static org.apache.dubbo.common.function.ThrowableAction.execute;
import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;
@@ -661,7 +662,7 @@ public class DubboBootstrap extends GenericEventListener {
cc.getParameters().put(CLIENT_KEY, registryConfig.getClient());
cc.setProtocol(registryConfig.getProtocol());
cc.setPort(registryConfig.getPort());
- cc.setAddress(registryConfig.getAddress());
+ cc.setAddress(getRegistryCompatibleAddress(registryConfig.getAddress()));
cc.setNamespace(registryConfig.getGroup());
cc.setUsername(registryConfig.getUsername());
cc.setPassword(registryConfig.getPassword());
@@ -674,6 +675,14 @@ public class DubboBootstrap extends GenericEventListener {
startConfigCenter();
}
+ private String getRegistryCompatibleAddress(String registryAddress) {
+ String[] addresses = REGISTRY_SPLIT_PATTERN.split(registryAddress);
+ if (addresses == null || addresses.length == 0) {
+ throw new IllegalStateException("Invalid registry address found.");
+ }
+ return addresses[0];
+ }
+
private void loadRemoteConfigs() {
// registry ids to registry configs
List<RegistryConfig> tmpRegistries = new ArrayList<>();
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
index 43a2f5b..ba8b9a7 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java
@@ -89,6 +89,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;
import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;
import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;
+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;
import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;
import static org.apache.dubbo.common.utils.UrlUtils.isServiceDiscoveryRegistryType;
import static org.apache.dubbo.config.Constants.ARCHITECTURE;
@@ -571,7 +572,9 @@ public class ConfigValidationUtils {
return;
}
for (Map.Entry<String, String> entry : parameters.entrySet()) {
- checkNameHasSymbol(entry.getKey(), entry.getValue());
+ if (!entry.getKey().equals(BACKUP_KEY)) {
+ checkNameHasSymbol(entry.getKey(), entry.getValue());
+ }
}
}