You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by me...@apache.org on 2020/02/19 06:31:20 UTC
[dubbo] branch master updated: [#5297] Only one of the multiple
registration centers using nacos can register (#5756)
This is an automated email from the ASF dual-hosted git repository.
mercyblitz 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 eda947a [#5297] Only one of the multiple registration centers using nacos can register (#5756)
eda947a is described below
commit eda947a8dfb276dff4362e6a5cbabcbb8fe9c97f
Author: Mercy Ma <me...@gmail.com>
AuthorDate: Wed Feb 19 14:30:33 2020 +0800
[#5297] Only one of the multiple registration centers using nacos can register (#5756)
* Polish /apache/dubbo#5745 : Increasing the stack size in the start.sh
* Polish /apache/dubbo#5297 : Only one of the multiple registration centers using nacos can register
---
.../main/java/org/apache/dubbo/config/RegistryConfig.java | 2 +-
.../DubboConfigDefaultPropertyValueBeanPostProcessor.java | 3 ++-
.../spring/context/annotation/EnableDubboConfigTest.java | 2 +-
.../dubbo/registry/support/AbstractRegistryFactory.java | 15 +++++++++++++--
.../apache/dubbo/registry/nacos/NacosRegistryFactory.java | 5 +++++
5 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
index 127be17..3b868fe 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/RegistryConfig.java
@@ -213,7 +213,7 @@ public class RegistryConfig extends AbstractConfig {
URL url = URL.valueOf(address);
setUsername(url.getUsername());
setPassword(url.getPassword());
- updateIdIfAbsent(url.getProtocol());
+// updateIdIfAbsent(url.getProtocol());
updateProtocolIfAbsent(url.getProtocol());
updatePortIfAbsent(url.getPort());
updateParameters(url.getParameters());
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java
index 0a33910..c513b13 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java
@@ -26,6 +26,7 @@ import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcess
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;
import org.springframework.core.Ordered;
+import org.springframework.core.PriorityOrdered;
import javax.annotation.PostConstruct;
import java.beans.PropertyDescriptor;
@@ -43,7 +44,7 @@ import static org.springframework.util.ReflectionUtils.invokeMethod;
* @since 2.7.6
*/
public class DubboConfigDefaultPropertyValueBeanPostProcessor extends GenericBeanPostProcessorAdapter<AbstractConfig>
- implements MergedBeanDefinitionPostProcessor, Ordered {
+ implements MergedBeanDefinitionPostProcessor, PriorityOrdered {
/**
* The bean name of {@link DubboConfigDefaultPropertyValueBeanPostProcessor}
diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java
index 3aabd80..d3c969d 100644
--- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java
+++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/context/annotation/EnableDubboConfigTest.java
@@ -82,7 +82,7 @@ public class EnableDubboConfigTest {
Assertions.assertEquals("netty", consumerConfig.getClient());
// asserts aliases
- assertTrue(hasAlias(context, "org.apache.dubbo.config.RegistryConfig#0", "zookeeper"));
+ assertFalse(hasAlias(context, "org.apache.dubbo.config.RegistryConfig#0", "zookeeper"));
assertFalse(hasAlias(context, "org.apache.dubbo.config.MonitorConfig#0", "zookeeper"));
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
index 7a3be4a..413c68f 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
@@ -109,7 +109,7 @@ public abstract class AbstractRegistryFactory implements RegistryFactory {
.addParameter(INTERFACE_KEY, RegistryService.class.getName())
.removeParameters(EXPORT_KEY, REFER_KEY)
.build();
- String key = url.toServiceStringWithoutResolving();
+ String key = createRegistryCacheKey(url);
// Lock the registry access process to ensure a single instance of the registry
LOCK.lock();
try {
@@ -130,6 +130,17 @@ public abstract class AbstractRegistryFactory implements RegistryFactory {
}
}
+ /**
+ * Create the key for the registries cache.
+ * This method may be override by the sub-class.
+ *
+ * @param url the registration {@link URL url}
+ * @return non-null
+ */
+ protected String createRegistryCacheKey(URL url) {
+ return url.toServiceStringWithoutResolving();
+ }
+
protected abstract Registry createRegistry(URL url);
@@ -175,7 +186,7 @@ public abstract class AbstractRegistryFactory implements RegistryFactory {
}
};
- public static void removeDestroyedRegistry(Registry toRm){
+ public static void removeDestroyedRegistry(Registry toRm) {
LOCK.lock();
try {
REGISTRIES.entrySet().removeIf(entry -> entry.getValue().equals(toRm));
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java
index 721da52..380280e 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistryFactory.java
@@ -31,6 +31,11 @@ import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.creat
public class NacosRegistryFactory extends AbstractRegistryFactory {
@Override
+ protected String createRegistryCacheKey(URL url) {
+ return url.toFullString();
+ }
+
+ @Override
protected Registry createRegistry(URL url) {
return new NacosRegistry(url, createNamingService(url));
}