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 3eff57a Remove some local only parameters (#8291)
3eff57a is described below
commit 3eff57a7ca2d666cd0ea7b66e26dc9206f57fc45
Author: Albumen Kevin <[email protected]>
AuthorDate: Wed Jul 14 17:25:20 2021 +0800
Remove some local only parameters (#8291)
---
.../dubbo/rpc/cluster/ProviderURLMergeProcessor.java | 2 ++
.../dubbo/rpc/cluster/directory/AbstractDirectory.java | 17 +++++++++++------
.../apache/dubbo/rpc/cluster/support/ClusterUtils.java | 14 ++++++++++++++
3 files changed, 27 insertions(+), 6 deletions(-)
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ProviderURLMergeProcessor.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ProviderURLMergeProcessor.java
index a548663..f38424e 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ProviderURLMergeProcessor.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ProviderURLMergeProcessor.java
@@ -33,6 +33,8 @@ public interface ProviderURLMergeProcessor {
*/
URL mergeUrl(URL remoteUrl, Map<String, String> localParametersMap);
+ default Map<String, String> mergeLocalParams(Map<String, String> localMap)
{ return localMap; }
+
default boolean accept(URL providerUrl, Map<String, String>
localParametersMap) {
return true;
}
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
index 9e66c86..b8cb39a 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
@@ -26,6 +26,7 @@ import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.cluster.Router;
import org.apache.dubbo.rpc.cluster.RouterChain;
+import org.apache.dubbo.rpc.cluster.support.ClusterUtils;
import java.util.Collections;
import java.util.List;
@@ -73,18 +74,22 @@ public abstract class AbstractDirectory<T> implements
Directory<T> {
this.url = url.removeAttribute(REFER_KEY).removeAttribute(MONITOR_KEY);
- Object referParams = url.getAttribute(REFER_KEY);
- if (referParams != null) {
- this.queryMap = (Map<String, String>) referParams;
- this.consumerUrl = (URL)url.getAttribute(CONSUMER_URL_KEY);
+ Map<String, String> queryMap;
+ Object referParams = url.getAttribute(REFER_KEY);
+ if (referParams instanceof Map) {
+ queryMap = (Map<String, String>) referParams;
+ this.consumerUrl = (URL) url.getAttribute(CONSUMER_URL_KEY);
} else {
- this.queryMap =
StringUtils.parseQueryString(url.getParameterAndDecoded(REFER_KEY));
+ queryMap =
StringUtils.parseQueryString(url.getParameterAndDecoded(REFER_KEY));
}
+ // remove some local only parameters
+ this.queryMap = ClusterUtils.mergeLocalParams(queryMap);
+
if (consumerUrl == null) {
String host = StringUtils.isNotEmpty(queryMap.get("register.ip"))
? queryMap.get("register.ip") : this.url.getHost();
String path = queryMap.get(PATH_KEY);
- String consumedProtocol = this.queryMap.get(PROTOCOL_KEY) == null
? DUBBO : this.queryMap.get(PROTOCOL_KEY);
+ String consumedProtocol = queryMap.get(PROTOCOL_KEY) == null ?
DUBBO : queryMap.get(PROTOCOL_KEY);
URL consumerUrlFrom = this.url
.setHost(host)
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
index 0ff3255..e2aa615 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
@@ -48,4 +48,18 @@ public class ClusterUtils {
return providerURLMergeProcessor.mergeUrl(remoteUrl, localMap);
}
+ public static Map<String, String> mergeLocalParams(Map<String, String>
localMap) {
+ String ump = localMap.get(URL_MERGE_PROCESSOR_KEY);
+ ProviderURLMergeProcessor providerURLMergeProcessor;
+
+ if (StringUtils.isNotEmpty(ump)) {
+ providerURLMergeProcessor =
ExtensionLoader.getExtensionLoader(ProviderURLMergeProcessor.class).getExtension(ump);
+ } else {
+ providerURLMergeProcessor =
ExtensionLoader.getExtensionLoader(ProviderURLMergeProcessor.class).getExtension("default");
+ }
+
+ return providerURLMergeProcessor.mergeLocalParams(localMap);
+
+ }
+
}