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/02/08 04:26:30 UTC
[dubbo] branch master updated: fix bug: config with registries and
registryIds, protocols and protocolIds is chaotic (#6968)
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 f7c6396 fix bug: config with registries and registryIds, protocols and protocolIds is chaotic (#6968)
f7c6396 is described below
commit f7c639630e1c2943da5d328376e30c63fc28a3b9
Author: wiki <dr...@outlook.com>
AuthorDate: Mon Feb 8 12:26:19 2021 +0800
fix bug: config with registries and registryIds, protocols and protocolIds is chaotic (#6968)
---
.../dubbo/config/AbstractInterfaceConfig.java | 19 +++++++----
.../apache/dubbo/config/ReferenceConfigBase.java | 10 +++---
.../org/apache/dubbo/config/ServiceConfigBase.java | 37 ++++++++++------------
.../org/apache/dubbo/config/ReferenceConfig.java | 5 ---
4 files changed, 34 insertions(+), 37 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 0761822..5bed8e8 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -312,6 +312,10 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
+ protected boolean notHasSelfRegistryProperty() {
+ return CollectionUtils.isEmpty(registries) && StringUtils.isEmpty(registryIds);
+ }
+
public void completeCompoundConfigs(AbstractInterfaceConfig interfaceConfig) {
if (interfaceConfig != null) {
if (application == null) {
@@ -320,15 +324,16 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
if (module == null) {
setModule(interfaceConfig.getModule());
}
- if (registries == null) {
+ if (notHasSelfRegistryProperty()) {
setRegistries(interfaceConfig.getRegistries());
+ setRegistryIds(interfaceConfig.getRegistryIds());
}
if (monitor == null) {
setMonitor(interfaceConfig.getMonitor());
}
}
if (module != null) {
- if (registries == null) {
+ if (notHasSelfRegistryProperty()) {
setRegistries(module.getRegistries());
}
if (monitor == null) {
@@ -336,8 +341,9 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
}
if (application != null) {
- if (registries == null) {
+ if (notHasSelfRegistryProperty()) {
setRegistries(application.getRegistries());
+ setRegistryIds(application.getRegistryIds());
}
if (monitor == null) {
setMonitor(application.getMonitor());
@@ -346,10 +352,9 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
}
protected void computeValidRegistryIds() {
- if (StringUtils.isEmpty(getRegistryIds())) {
- if (getApplication() != null && StringUtils.isNotEmpty(getApplication().getRegistryIds())) {
- setRegistryIds(getApplication().getRegistryIds());
- }
+ if (application != null && notHasSelfRegistryProperty()) {
+ setRegistries(application.getRegistries());
+ setRegistryIds(application.getRegistryIds());
}
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
index 966b384..2de2959 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java
@@ -259,12 +259,14 @@ public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {
@Override
protected void computeValidRegistryIds() {
- super.computeValidRegistryIds();
- if (StringUtils.isEmpty(getRegistryIds())) {
- if (getConsumer() != null && StringUtils.isNotEmpty(getConsumer().getRegistryIds())) {
- setRegistryIds(getConsumer().getRegistryIds());
+ if (consumer != null) {
+ if (notHasSelfRegistryProperty()) {
+ setRegistries(consumer.getRegistries());
+ setRegistryIds(consumer.getRegistryIds());
}
}
+
+ super.computeValidRegistryIds();
}
@Parameter(excluded = true)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
index f1b14d6..11c3bfc 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
@@ -202,32 +202,35 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
}
public void checkProtocol() {
+ if (provider != null && notHasSelfProtocolProperty()) {
+ setProtocols(provider.getProtocols());
+ setProtocolIds(provider.getProtocolIds());
+ }
+
if (CollectionUtils.isEmpty(protocols) && provider != null) {
setProtocols(provider.getProtocols());
}
convertProtocolIdsToProtocols();
}
+ private boolean notHasSelfProtocolProperty() {
+ return CollectionUtils.isEmpty(protocols) && StringUtils.isEmpty(protocolIds);
+ }
+
public void completeCompoundConfigs() {
super.completeCompoundConfigs(provider);
if (provider != null) {
- if (protocols == null) {
+ if (notHasSelfProtocolProperty()) {
setProtocols(provider.getProtocols());
+ setProtocolIds(provider.getProtocolIds());
}
if (configCenter == null) {
setConfigCenter(provider.getConfigCenter());
}
- if (StringUtils.isEmpty(registryIds)) {
- setRegistryIds(provider.getRegistryIds());
- }
- if (StringUtils.isEmpty(protocolIds)) {
- setProtocolIds(provider.getProtocolIds());
- }
}
}
private void convertProtocolIdsToProtocols() {
- computeValidProtocolIds();
if (StringUtils.isEmpty(protocolIds)) {
if (CollectionUtils.isEmpty(protocols)) {
List<ProtocolConfig> protocolConfigs = ApplicationModel.getConfigManager().getDefaultProtocols();
@@ -413,22 +416,14 @@ public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {
return StringUtils.isEmpty(this.version) ? (provider != null ? provider.getVersion() : this.version) : this.version;
}
- private void computeValidProtocolIds() {
- if (StringUtils.isEmpty(getProtocolIds())) {
- if (getProvider() != null && StringUtils.isNotEmpty(getProvider().getProtocolIds())) {
- setProtocolIds(getProvider().getProtocolIds());
- }
- }
- }
-
@Override
protected void computeValidRegistryIds() {
- super.computeValidRegistryIds();
- if (StringUtils.isEmpty(getRegistryIds())) {
- if (getProvider() != null && StringUtils.isNotEmpty(getProvider().getRegistryIds())) {
- setRegistryIds(getProvider().getRegistryIds());
- }
+ if (provider != null && notHasSelfRegistryProperty()) {
+ setRegistries(provider.getRegistries());
+ setRegistryIds(provider.getRegistryIds());
}
+
+ super.computeValidRegistryIds();
}
public abstract void export();
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 6445588..7a87c8b 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
@@ -424,11 +424,6 @@ public class ReferenceConfig<T> extends ReferenceConfigBase<T> {
throw new IllegalStateException("<dubbo:reference interface=\"\" /> interface not allow null!");
}
completeCompoundConfigs(consumer);
- if (consumer != null) {
- if (StringUtils.isEmpty(registryIds)) {
- setRegistryIds(consumer.getRegistryIds());
- }
- }
// get consumer's global configuration
checkDefault();