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 37b3e7192838..e6ed749f0cbd 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 @@ -95,24 +95,11 @@ public static URL mergeUrl(URL remoteUrl, Map localMap) { } if (remoteMap != null && remoteMap.size() > 0) { // Use version passed from provider side - String dubbo = remoteMap.get(Constants.DUBBO_VERSION_KEY); - if (dubbo != null && dubbo.length() > 0) { - map.put(Constants.DUBBO_VERSION_KEY, dubbo); - } - String version = remoteMap.get(Constants.VERSION_KEY); - if (version != null && version.length() > 0) { - map.put(Constants.VERSION_KEY, version); - } - String methods = remoteMap.get(Constants.METHODS_KEY); - if (methods != null && methods.length() > 0) { - map.put(Constants.METHODS_KEY, methods); - } - // Reserve timestamp of provider url. - String remoteTimestamp = remoteMap.get(Constants.TIMESTAMP_KEY); - if (remoteTimestamp != null && remoteTimestamp.length() > 0) { - map.put(Constants.REMOTE_TIMESTAMP_KEY, remoteMap.get(Constants.TIMESTAMP_KEY)); - } - + reserveRemoteValue(Constants.DUBBO_VERSION_KEY, map, remoteMap); + reserveRemoteValue(Constants.VERSION_KEY, map, remoteMap); + reserveRemoteValue(Constants.METHODS_KEY, map, remoteMap); + reserveRemoteValue(Constants.TIMESTAMP_KEY, map, remoteMap); + reserveRemoteValue(Constants.TAG_KEY, map, remoteMap); // TODO, for compatibility consideration, we cannot simply change the value behind APPLICATION_KEY from Consumer to Provider. So just add an extra key here. // Reserve application name from provider. map.put(Constants.REMOTE_APPLICATION_KEY, remoteMap.get(Constants.APPLICATION_KEY)); @@ -135,4 +122,11 @@ public static URL mergeUrl(URL remoteUrl, Map localMap) { return remoteUrl.clearParameters().addParameters(map); } + private static void reserveRemoteValue(String key, Map map, Map remoteMap) { + String remoteValue = remoteMap.get(key); + if (StringUtils.isNotEmpty(remoteValue)) { + map.put(key, remoteValue); + } + } + } \ No newline at end of file diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java index 57cb6c34d0e0..59cdd5cae9b4 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java @@ -155,6 +155,8 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig { // the scope for referring/exporting a service, if it's local, it means searching in current JVM only. private String scope; + protected String tag; + /** * Check whether the registry config is exists, and then conversion it to {@link RegistryConfig} */ @@ -837,4 +839,13 @@ public MetricsConfig getMetrics() { public void setMetrics(MetricsConfig metrics) { this.metrics = metrics; } + + @Parameter(key = Constants.TAG_KEY, useKeyAsProperty = false) + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java index 24ac6a2d7520..67e8a1b837e0 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java @@ -17,8 +17,8 @@ package org.apache.dubbo.config; import org.apache.dubbo.common.Constants; -import org.apache.dubbo.config.context.ConfigManager; import org.apache.dubbo.common.utils.CollectionUtils; +import org.apache.dubbo.config.context.ConfigManager; import org.apache.dubbo.config.support.Parameter; import org.apache.dubbo.rpc.ExporterListener; @@ -91,8 +91,7 @@ public abstract class AbstractServiceConfig extends AbstractInterfaceConfig { */ protected List protocols; protected String protocolIds; - // provider tag - protected String tag; + // max allowed execute times private Integer executes; @@ -287,13 +286,4 @@ public String getSerialization() { public void setSerialization(String serialization) { this.serialization = serialization; } - - @Parameter(key = Constants.TAG_KEY, useKeyAsProperty = false) - public String getTag() { - return tag; - } - - public void setTag(String tag) { - this.tag = tag; - } } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java index 87ccdf3330ec..18008b989cbd 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java @@ -280,7 +280,9 @@ private void init() { appendParameters(map, metrics); appendParameters(map, application); appendParameters(map, module); - appendParameters(map, consumer, Constants.DEFAULT_KEY); + // remove 'default.' prefix for configs from ConsumerConfig + // appendParameters(map, consumer, Constants.DEFAULT_KEY); + appendParameters(map, consumer); appendParameters(map, this); Map attributes = null; if (CollectionUtils.isNotEmpty(methods)) { @@ -457,22 +459,14 @@ protected boolean shouldInit() { } private void checkDefault() { - createConsumerIfAbsent(); - } - - private void createConsumerIfAbsent() { if (consumer != null) { return; } - setConsumer( - ConfigManager.getInstance() - .getDefaultConsumer() - .orElseGet(() -> { - ConsumerConfig consumerConfig = new ConsumerConfig(); - consumerConfig.refresh(); - return consumerConfig; - }) - ); + setConsumer(ConfigManager.getInstance().getDefaultConsumer().orElseGet(() -> { + ConsumerConfig consumerConfig = new ConsumerConfig(); + consumerConfig.refresh(); + return consumerConfig; + })); } private void completeCompoundConfigs() { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java index dce2c9448481..b9f6110a2a33 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java @@ -431,7 +431,9 @@ private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List r appendParameters(map, metrics); appendParameters(map, application); appendParameters(map, module); - appendParameters(map, provider, Constants.DEFAULT_KEY); + // remove 'default.' prefix for configs from ProviderConfig + // appendParameters(map, provider, Constants.DEFAULT_KEY); + appendParameters(map, provider); appendParameters(map, protocolConfig); appendParameters(map, this); if (CollectionUtils.isNotEmpty(methods)) { diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java index bdbbd356cb4f..c4851bd10318 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java @@ -257,6 +257,11 @@ */ String protocol() default ""; + /** + * Service tag name + */ + String tag() default ""; + /** * methods support * @return diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/builders/AbstractInterfaceBuilder.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/builders/AbstractInterfaceBuilder.java index e8272d0f8c39..fbc6912ee6ed 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/builders/AbstractInterfaceBuilder.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/builders/AbstractInterfaceBuilder.java @@ -121,6 +121,8 @@ public abstract class AbstractInterfaceBuilder protocols; protected String protocolIds; - // provider tag - protected String tag; + // max allowed execute times private Integer executes; @@ -197,11 +196,6 @@ public B protocolIds(String protocolIds) { return getThis(); } - public B tag(String tag) { - this.tag = tag; - return getThis(); - } - public B executes(Integer executes) { this.executes = executes; return getThis(); @@ -262,9 +256,6 @@ public void build(T instance) { if (!StringUtils.isEmpty(protocolIds)) { instance.setProtocolIds(protocolIds); } - if (tag != null) { - instance.setTag(tag); - } if (executes != null) { instance.setExecutes(executes); } diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java index 296538cbd94e..2dff18b5af5a 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java @@ -134,7 +134,7 @@ public void testExport() throws Exception { assertThat(url.getParameters(), hasEntry(Constants.APPLICATION_KEY, "app")); assertThat(url.getParameters(), hasKey(Constants.BIND_IP_KEY)); assertThat(url.getParameters(), hasKey(Constants.BIND_PORT_KEY)); - assertThat(url.getParameters(), hasEntry(Constants.DEFAULT_KEY + "." + Constants.EXPORT_KEY, "true")); + assertThat(url.getParameters(), hasEntry(Constants.EXPORT_KEY, "true")); assertThat(url.getParameters(), hasEntry("echo.0.callback", "false")); assertThat(url.getParameters(), hasEntry(Constants.GENERIC_KEY, "false")); assertThat(url.getParameters(), hasEntry(Constants.INTERFACE_KEY, DemoService.class.getName())); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/InvokerSideConfigUrlTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/InvokerSideConfigUrlTest.java index da0f60717762..1155ec4a1f8b 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/InvokerSideConfigUrlTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/InvokerSideConfigUrlTest.java @@ -28,8 +28,8 @@ import org.apache.dubbo.config.mock.MockRegistry; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -112,18 +112,11 @@ public class InvokerSideConfigUrlTest extends UrlTestBase { //{"", "", "", "", "", "", "", "", "", ""}, }; - private Object consumerConfTable[][] = { - {"timeout", "default.timeout", "int", 5000, 8000, "", "", "", "", ""}, - {"retries", "default.retries", "int", 2, 5, "", "", "", "", ""}, - {"loadbalance", "default.loadbalance", "string", "random", "leastactive", "", "", "", "", ""}, - {"async", "default.async", "boolean", false, true, "", "", "", "", ""}, - {"connections", "default.connections", "int", 100, 5, "", "", "", "", ""}, + private Object consumerConfTable[][] = {{"timeout", "timeout", "int", 5000, 8000, "", "", "", "", ""}, {"retries", "retries", "int", 2, 5, "", "", "", "", ""}, {"loadbalance", "loadbalance", "string", "random", "leastactive", "", "", "", "", ""}, {"async", "async", "boolean", false, true, "", "", "", "", ""}, {"connections", "connections", "int", 100, 5, "", "", "", "", ""}, // {"generic", "generic", "boolean", false, false, "", "", "", "", ""}, {"check", "check", "boolean", true, false, "", "", "", "", ""}, {"proxy", "proxy", "string", "javassist", "jdk", "javassist", "", "", "", ""}, - {"owner", "owner", "string", "", "haomin", "", "", "", "", ""}, - {"actives", "default.actives", "int", 0, 5, "", "", "", "", ""}, - {"cluster", "default.cluster", "string", "failover", "forking", "", "", "", "", ""}, + {"owner", "owner", "string", "", "haomin", "", "", "", "", ""}, {"actives", "actives", "int", 0, 5, "", "", "", "", ""}, {"cluster", "cluster", "string", "failover", "forking", "", "", "", "", ""}, {"filter", "", "string", "", "", "", "", "", "", ""}, {"listener", "", "string", "", "", "", "", "", "", ""}, // {"", "", "", "", "", "", "", "", "", ""}, diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/UrlTestBase.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/UrlTestBase.java index f5a1a73ed224..65dadc343f0f 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/UrlTestBase.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/UrlTestBase.java @@ -80,13 +80,7 @@ public class UrlTestBase { // {"subscribe", "subscribe", "boolean", true, false, "", "", "", "", ""}, {"dynamic", "dynamic", "boolean", true, false, "", "", "", "", ""}, }; - protected Object provConfTable[][] = { - {"cluster", "default.cluster", "string", "string", "failover", "failfast", "failsafe", "", "", ""}, - {"async", "default.async", "boolean", false, true, "", "", "", "", ""}, - {"loadbalance", "default.loadbalance", "string", "random", "leastactive", "", "", "", "", ""}, - {"connections", "default.connections", "int", 0, 60, "", "", "", "", ""}, - {"retries", "default.retries", "int", 2, 60, "", "", "", "", ""}, - {"timeout", "default.timeout", "int", 5000, 60, "", "", "", "", ""}, + protected Object provConfTable[][] = {{"cluster", "cluster", "string", "string", "failover", "failfast", "failsafe", "", "", ""}, {"async", "async", "boolean", false, true, "", "", "", "", ""}, {"loadbalance", "loadbalance", "string", "random", "leastactive", "", "", "", "", ""}, {"connections", "connections", "int", 0, 60, "", "", "", "", ""}, {"retries", "retries", "int", 2, 60, "", "", "", "", ""}, {"timeout", "timeout", "int", 5000, 60, "", "", "", "", ""}, //change by fengting listener 没有缺省值 //{"listener", "exporter.listener", "string", "", "", "", "", "", "", ""}, //{"filter", "service.filter", "string", "", "", "", "", "", "", ""}, diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd index 01996aefbf85..9e179ef287a2 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd @@ -172,6 +172,12 @@ + + + + + + @@ -317,12 +323,6 @@ - - - - - - diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd index 33ff3ad5b2bb..e517f0cb4f3e 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd @@ -172,6 +172,12 @@ + + + + + + @@ -317,12 +323,6 @@ - - - - - -