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 <[email protected]>
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);
}