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 2022/11/12 08:11:23 UTC
[dubbo] branch 3.2 updated (c464e55700 -> 6e7ee94383)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a change to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
from c464e55700 fix transform
add aec3f84c65 fix issue: get available protocol for metadata service. (#10846)
new 49d1c59b36 Merge branch 'apache-3.1' into apache-3.2
new 6e7ee94383 Pick #10846 into 3.2
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../builders/InternalServiceConfigBuilder.java | 87 ++++++++++++++++++++--
.../org/apache/dubbo/config/ServiceConfigTest.java | 8 +-
...egistryCenterExportMetadataIntegrationTest.java | 28 ++-----
...egistryCenterExportMetadataIntegrationTest.java | 28 ++-----
4 files changed, 100 insertions(+), 51 deletions(-)
[dubbo] 01/02: Merge branch 'apache-3.1' into apache-3.2
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 49d1c59b368cfecca2ac409a8262280f8e6556db
Merge: c464e55700 aec3f84c65
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Sat Nov 12 16:02:28 2022 +0800
Merge branch 'apache-3.1' into apache-3.2
# Conflicts:
# dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
.../org/apache/dubbo/config/ServiceConfigTest.java | 8 ++++---
...egistryCenterExportMetadataIntegrationTest.java | 28 ++++++----------------
...egistryCenterExportMetadataIntegrationTest.java | 28 ++++++----------------
3 files changed, 19 insertions(+), 45 deletions(-)
[dubbo] 02/02: Pick #10846 into 3.2
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 6e7ee943833e37022d364e289f14efdd4aec47fa
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Sat Nov 12 16:11:06 2022 +0800
Pick #10846 into 3.2
---
.../builders/InternalServiceConfigBuilder.java | 87 ++++++++++++++++++++--
1 file changed, 81 insertions(+), 6 deletions(-)
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/InternalServiceConfigBuilder.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/InternalServiceConfigBuilder.java
index 06c7f9186c..da9bcbc4d4 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/InternalServiceConfigBuilder.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/bootstrap/builders/InternalServiceConfigBuilder.java
@@ -22,18 +22,26 @@ import org.apache.dubbo.common.utils.Assert;
import org.apache.dubbo.common.utils.CollectionUtils;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.config.ConsumerConfig;
import org.apache.dubbo.config.ProtocolConfig;
+import org.apache.dubbo.config.ProviderConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
+import org.apache.dubbo.config.context.ModuleConfigManager;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProtocolServer;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.model.ModuleModel;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
+import java.util.stream.Stream;
+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_PROTOCOL_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.CORE_THREADS_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;
import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;
@@ -82,14 +90,78 @@ public class InternalServiceConfigBuilder<T> {
Map<String, String> params = getApplicationConfig().getParameters();
if (CollectionUtils.isNotEmptyMap(params)) {
- protocol = getApplicationConfig().getParameters().get(key);
+ protocol = params.get(key);
}
}
- this.protocol = StringUtils.isNotEmpty(protocol) ? protocol : DUBBO_PROTOCOL;
+ this.protocol = StringUtils.isNotEmpty(protocol) ? protocol : getRelatedOrDefaultProtocol();
return getThis();
}
+
+ /**
+ * Get other configured protocol from environment in priority order. If get nothing, use default dubbo.
+ *
+ * @return
+ */
+ private String getRelatedOrDefaultProtocol() {
+ String protocol = "";
+ // <dubbo:consumer/>
+ List<ModuleModel> moduleModels = applicationModel.getPubModuleModels();
+ protocol = moduleModels.stream()
+ .map(ModuleModel::getConfigManager)
+ .map(ModuleConfigManager::getConsumers)
+ .filter(CollectionUtils::isNotEmpty)
+ .flatMap(Collection::stream)
+ .map(ConsumerConfig::getProtocol)
+ .filter(StringUtils::isNotEmpty)
+ .findFirst()
+ .orElse("");
+ // <dubbo:provider/>
+ if (StringUtils.isEmpty(protocol)) {
+ Stream<ProviderConfig> providerConfigStream = moduleModels.stream()
+ .map(ModuleModel::getConfigManager)
+ .map(ModuleConfigManager::getProviders)
+ .filter(CollectionUtils::isNotEmpty)
+ .flatMap(Collection::stream);
+ protocol = providerConfigStream
+ .filter((providerConfig) -> providerConfig.getProtocol() != null || CollectionUtils.isNotEmpty(providerConfig.getProtocols()))
+ .map(providerConfig -> {
+ if (providerConfig.getProtocol() != null && StringUtils.isNotEmpty(providerConfig.getProtocol().getName())) {
+ return providerConfig.getProtocol().getName();
+ } else {
+ return providerConfig.getProtocols().stream()
+ .map(ProtocolConfig::getName)
+ .filter(StringUtils::isNotEmpty)
+ .findFirst()
+ .orElse("");
+ }
+ })
+ .filter(StringUtils::isNotEmpty)
+ .findFirst()
+ .orElse("");
+ }
+ // <dubbo:protocol/>
+ if (StringUtils.isEmpty(protocol)) {
+ Collection<ProtocolConfig> protocols = applicationModel.getApplicationConfigManager().getProtocols();
+ if (CollectionUtils.isNotEmpty(protocols)) {
+ protocol = protocols.stream()
+ .map(ProtocolConfig::getName).filter(StringUtils::isNotEmpty).findFirst().orElse("");
+ }
+ }
+ // <dubbo:application/>
+ if (StringUtils.isEmpty(protocol)) {
+ protocol = getApplicationConfig().getProtocol();
+ if (StringUtils.isEmpty(protocol)) {
+ Map<String, String> params = getApplicationConfig().getParameters();
+ if (CollectionUtils.isNotEmptyMap(params)) {
+ protocol = params.get(APPLICATION_PROTOCOL_KEY);
+ }
+ }
+ }
+ return StringUtils.isNotEmpty(protocol) ? protocol : DUBBO_PROTOCOL;
+ }
+
public InternalServiceConfigBuilder<T> protocol(String protocol) {
this.protocol(protocol, null);
return getThis();
@@ -136,9 +208,12 @@ public class InternalServiceConfigBuilder<T> {
}
this.port = Integer.parseInt(rawPort);
} else {
- Integer protocolPort = getProtocolConfig().getPort();
- if (null != protocolPort && protocolPort != -1) {
- this.port = protocolPort;
+ ProtocolConfig specifiedProtocolConfig = getProtocolConfig();
+ if (specifiedProtocolConfig != null) {
+ Integer protocolPort = specifiedProtocolConfig.getPort();
+ if (null != protocolPort && protocolPort != -1) {
+ this.port = protocolPort;
+ }
}
}
}
@@ -154,7 +229,7 @@ public class InternalServiceConfigBuilder<T> {
}
private ProtocolConfig getProtocolConfig() {
- return applicationModel.getApplicationConfigManager().getProtocol(protocol).get();
+ return applicationModel.getApplicationConfigManager().getProtocol(protocol).orElse(null);
}
public ServiceConfig<T> build(Consumer<ServiceConfig<T>> configConsumer){