You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/03/28 07:44:46 UTC
[dubbo] branch master updated: fix #7453 add elements repeatedly
(#7454)
This is an automated email from the ASF dual-hosted git repository.
albumenj 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 a64c3d4 fix #7453 add elements repeatedly (#7454)
a64c3d4 is described below
commit a64c3d4accbaee9ec8617e78e6d59c49f6e2790b
Author: xiaoheng1 <20...@qq.com>
AuthorDate: Sun Mar 28 15:44:32 2021 +0800
fix #7453 add elements repeatedly (#7454)
---
.../cluster/configurator/AbstractConfigurator.java | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java
index 166479c..108810d 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java
@@ -47,6 +47,8 @@ import static org.apache.dubbo.rpc.cluster.Constants.OVERRIDE_PROVIDERS_KEY;
*/
public abstract class AbstractConfigurator implements Configurator {
+ private static final String TILDE = "~";
+
private final URL configuratorUrl;
public AbstractConfigurator(URL url) {
@@ -76,7 +78,8 @@ public abstract class AbstractConfigurator implements Configurator {
String configuratorSide = configuratorUrl.getParameter(SIDE_KEY);
if (currentSide.equals(configuratorSide) && CONSUMER.equals(configuratorSide) && 0 == configuratorUrl.getPort()) {
url = configureIfMatch(NetUtils.getLocalHost(), url);
- } else if (currentSide.equals(configuratorSide) && PROVIDER.equals(configuratorSide) && url.getPort() == configuratorUrl.getPort()) {
+ } else if (currentSide.equals(configuratorSide) && PROVIDER.equals(configuratorSide) &&
+ url.getPort() == configuratorUrl.getPort()) {
url = configureIfMatch(url.getHost(), url);
}
}
@@ -138,10 +141,13 @@ public abstract class AbstractConfigurator implements Configurator {
for (Map.Entry<String, String> entry : configuratorUrl.getParameters().entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
- if (key.startsWith("~") || APPLICATION_KEY.equals(key) || SIDE_KEY.equals(key)) {
- conditionKeys.add(key);
+ boolean startWithTilde = startWithTilde(key);
+ if (startWithTilde || APPLICATION_KEY.equals(key) || SIDE_KEY.equals(key)) {
+ if (startWithTilde) {
+ conditionKeys.add(key);
+ }
if (value != null && !ANY_VALUE.equals(value)
- && !value.equals(url.getParameter(key.startsWith("~") ? key.substring(1) : key))) {
+ && !value.equals(url.getParameter(startWithTilde ? key.substring(1) : key))) {
return url;
}
}
@@ -153,6 +159,13 @@ public abstract class AbstractConfigurator implements Configurator {
return url;
}
+ private boolean startWithTilde(String key) {
+ if (StringUtils.isNotEmpty(key) && key.startsWith(TILDE)) {
+ return true;
+ }
+ return false;
+ }
+
protected abstract URL doConfigure(URL currentUrl, URL configUrl);
}