You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2021/05/27 06:58:23 UTC

[servicecomb-java-chassis] branch master updated: [SCB-2267]provide api to set registry name to avoid multi serivce center cache got wrong(#2387)

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new c04cc5f  [SCB-2267]provide api to set registry name to avoid multi serivce center cache got wrong(#2387)
c04cc5f is described below

commit c04cc5f5c5376f66b1b79c8cceb8171ca39ac329
Author: wxkwxkwxk1231 <ka...@protonmail.com>
AuthorDate: Thu May 27 14:58:16 2021 +0800

    [SCB-2267]provide api to set registry name to avoid multi serivce center cache got wrong(#2387)
---
 .../ServerBServiceCenterConfiguration.java               |  1 +
 .../servicecomb/serviceregistry/RegistryUtils.java       | 16 ++++++++++++++--
 .../config/ServiceRegistryConfigCustomizer.java          |  5 +++++
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBServiceCenterConfiguration.java b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBServiceCenterConfiguration.java
index 4c13d9b..d27e967 100644
--- a/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBServiceCenterConfiguration.java
+++ b/demo/demo-multi-service-center/demo-multi-service-center-client/src/main/java/org/apache/servicecomb/demo/multiServiceCenterClient/ServerBServiceCenterConfiguration.java
@@ -32,6 +32,7 @@ public class ServerBServiceCenterConfiguration {
         // use a different http client instance
         .setClientName("registry-serverB")
         .setWatchClientName("registry-watch-serverB")
+        .setRegistryName("server-B")
         .get();
   }
 }
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
index d2c4239..221a95f 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java
@@ -253,8 +253,20 @@ public final class RegistryUtils {
 
   public static void addExtraServiceRegistry(ServiceRegistry serviceRegistry) {
     Objects.requireNonNull(serviceRegistry);
-    LOGGER.info("extra ServiceRegistry added: [{}], [{}]", serviceRegistry.getName(), serviceRegistry.getClass());
-    EXTRA_SERVICE_REGISTRIES.put(serviceRegistry.getName(), serviceRegistry);
+    String serviceRegistryName = serviceRegistry.getName();
+    if (serviceRegistryName.equals(ServiceRegistry.DEFAULT_REGISTRY_NAME)) {
+      LOGGER.error("Registry name cannot be same as default registry name!");
+      throw new IllegalArgumentException("Registry Name Duplicated");
+    }
+    if (EXTRA_SERVICE_REGISTRIES.containsKey(serviceRegistryName)) {
+      LOGGER.error("Registry {} is duplicated between implementation {} and {}"
+          + ", please set different names for each implementations",
+          serviceRegistryName, serviceRegistry.getClass().getName(),
+          EXTRA_SERVICE_REGISTRIES.get(serviceRegistryName).getClass().getName());
+      throw new IllegalArgumentException("Registry Name Duplicated");
+    }
+    LOGGER.info("extra ServiceRegistry added: [{}], [{}]", serviceRegistryName, serviceRegistry.getClass());
+    EXTRA_SERVICE_REGISTRIES.put(serviceRegistryName, serviceRegistry);
   }
 
   /**
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigCustomizer.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigCustomizer.java
index 5ffdd31..bad4133 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigCustomizer.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/config/ServiceRegistryConfigCustomizer.java
@@ -46,6 +46,11 @@ public class ServiceRegistryConfigCustomizer {
     return this;
   }
 
+  public ServiceRegistryConfigCustomizer setRegistryName(String registryName) {
+    this.original.setRegistryName(registryName);
+    return this;
+  }
+
   public ServiceRegistryConfigCustomizer setWatchClientName(String watchClientName) {
     this.original.setWatchClientName(watchClientName);
     return this;