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));
     }