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 2020/08/12 00:58:45 UTC

[servicecomb-java-chassis] branch master updated: [SCB-2064]Fix RegistryUtils API not using version rule parameter problem (#1916)

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 e84f4c8  [SCB-2064]Fix RegistryUtils API not using version rule parameter problem (#1916)
e84f4c8 is described below

commit e84f4c8c1b94c48656727e084043a4ad58d91633
Author: bao liu <bi...@qq.com>
AuthorDate: Wed Aug 12 08:58:36 2020 +0800

    [SCB-2064]Fix RegistryUtils API not using version rule parameter problem (#1916)
---
 .../servicecomb/serviceregistry/RegistryUtils.java      | 12 +++++++++---
 .../serviceregistry/ServiceCenterDiscovery.java         |  3 +--
 .../servicecomb/serviceregistry/ServiceRegistry.java    |  2 +-
 .../diagnosis/instance/InstanceCacheChecker.java        |  3 +--
 .../registry/AbstractServiceRegistry.java               | 17 +++++++++--------
 .../registry/cache/MicroserviceCacheKey.java            | 17 ++++++++++++-----
 .../servicecomb/serviceregistry/TestRegistry.java       |  2 +-
 .../instance/TestInstanceCacheCheckerMock.java          |  8 ++++----
 .../registry/EmptyMockServiceRegistry.java              |  2 +-
 .../registry/cache/MicroserviceCacheKeyTest.java        |  4 ++--
 10 files changed, 41 insertions(+), 29 deletions(-)

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 11fcd94..b133e67 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
@@ -154,7 +154,9 @@ public final class RegistryUtils {
       String versionRule) {
     MicroserviceCache serviceCache = aggregateServiceRegistryCache.findServiceCache(
         MicroserviceCacheKey.builder()
-            .appId(appId).serviceName(serviceName).env(getMicroservice().getEnvironment())
+            .appId(appId).serviceName(serviceName)
+            .env(getMicroservice().getEnvironment())
+            .versionRule(versionRule)
             .build()
     );
     return MicroserviceCacheStatus.SERVICE_NOT_FOUND.equals(serviceCache.getStatus()) ?
@@ -176,9 +178,13 @@ public final class RegistryUtils {
   }
 
   public static MicroserviceInstances findServiceInstances(String appId, String serviceName,
-      String versionRule, String revision) {
+      String versionRule) {
     MicroserviceCache serviceCache = aggregateServiceRegistryCache.findServiceCache(
-        MicroserviceCacheKey.builder().appId(appId).serviceName(serviceName).env(getMicroservice().getEnvironment())
+        MicroserviceCacheKey.builder()
+            .appId(appId)
+            .serviceName(serviceName)
+            .env(getMicroservice().getEnvironment())
+            .versionRule(versionRule)
             .build());
     return convertCacheToMicroserviceInstances(serviceCache);
   }
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java
index bdb6a05..4c05db8 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java
@@ -79,8 +79,7 @@ public class ServiceCenterDiscovery implements Discovery {
   public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
     return RegistryUtils.findServiceInstances(appId,
         serviceName,
-        versionRule,
-        revision);
+        versionRule);
   }
 
   @Override
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
index 28ab9c9..dc00b4d 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java
@@ -77,7 +77,7 @@ public interface ServiceRegistry {
       String microserviceVersionRule);
 
   MicroserviceInstances findServiceInstances(String appId, String microserviceName,
-      String microserviceVersionRule, String revision);
+      String microserviceVersionRule);
 
   MicroserviceCache findMicroserviceCache(MicroserviceCacheKey microserviceCacheKey);
 
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java
index 6182924..4ad8b54 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java
@@ -87,8 +87,7 @@ public class InstanceCacheChecker {
     MicroserviceInstances microserviceInstances = RegistryUtils
         .findServiceInstances(microserviceVersions.getAppId(),
             microserviceVersions.getMicroserviceName(),
-            DefinitionConst.VERSION_RULE_ALL,
-            null);
+            DefinitionConst.VERSION_RULE_ALL);
     if (microserviceInstances == null) {
       instanceCacheResult.setStatus(Status.UNKNOWN);
       instanceCacheResult.setDetail("failed to find instances from service center");
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
index d814ab9..a659d2c 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java
@@ -19,8 +19,6 @@ package org.apache.servicecomb.serviceregistry.registry;
 import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_DEFAULT_REGISTER_BY;
 import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_FRAMEWORK_DEFAULT_NAME;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -40,10 +38,7 @@ import org.apache.servicecomb.registry.api.registry.Microservice;
 import org.apache.servicecomb.registry.api.registry.MicroserviceFactory;
 import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
 import org.apache.servicecomb.registry.api.registry.MicroserviceInstances;
-import org.apache.servicecomb.registry.consumer.MicroserviceManager;
-import org.apache.servicecomb.registry.consumer.StaticMicroserviceVersions;
 import org.apache.servicecomb.registry.definition.MicroserviceDefinition;
-import org.apache.servicecomb.registry.definition.MicroserviceNameParser;
 import org.apache.servicecomb.serviceregistry.RegistryUtils;
 import org.apache.servicecomb.serviceregistry.ServiceRegistry;
 import org.apache.servicecomb.serviceregistry.api.Const;
@@ -196,20 +191,25 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
     return true;
   }
 
+  @Override
   public List<MicroserviceInstance> findServiceInstance(String appId, String serviceName,
       String versionRule) {
-    MicroserviceInstances instances = findServiceInstances(appId, serviceName, versionRule, null);
+    MicroserviceInstances instances = findServiceInstances(appId, serviceName, versionRule);
     if (instances == null || instances.isMicroserviceNotExist()) {
       return null;
     }
     return instances.getInstancesResponse().getInstances();
   }
 
+  @Override
   public MicroserviceInstances findServiceInstances(String appId, String serviceName,
-      String versionRule, String revision) {
+      String versionRule) {
     MicroserviceCache microserviceCache = serviceRegistryCache
         .findServiceCache(MicroserviceCacheKey.builder()
-            .serviceName(serviceName).appId(appId).env(microservice.getEnvironment()).build());
+            .serviceName(serviceName).appId(appId)
+            .env(microservice.getEnvironment())
+            .versionRule(versionRule)
+            .build());
     return RegistryUtils.convertCacheToMicroserviceInstances(microserviceCache);
   }
 
@@ -228,6 +228,7 @@ public abstract class AbstractServiceRegistry implements ServiceRegistry {
     return success;
   }
 
+  @Override
   public boolean updateInstanceProperties(Map<String, String> instanceProperties) {
     MicroserviceInstance microserviceInstance = microservice.getInstance();
     boolean success = srClient.updateInstanceProperties(microserviceInstance.getServiceId(),
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKey.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKey.java
index a127a54..fda9876 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKey.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKey.java
@@ -29,7 +29,7 @@ public class MicroserviceCacheKey {
 
   private String serviceName;
 
-  private static final String VERSION_RULE = DefinitionConst.VERSION_RULE_ALL;
+  private String versionRule = DefinitionConst.VERSION_RULE_ALL;
 
   public static MicroserviceCacheKeyBuilder builder() {
     return new MicroserviceCacheKeyBuilder();
@@ -42,6 +42,7 @@ public class MicroserviceCacheKey {
     Objects.requireNonNull(this.env, "microserviceCacheKey.env is null");
     Objects.requireNonNull(this.appId, "microserviceCacheKey.appId is null");
     Objects.requireNonNull(this.serviceName, "microserviceCacheKey.serviceName is null");
+    Objects.requireNonNull(this.versionRule, "microserviceCacheKey.versionRule is null");
   }
 
   public String getEnv() {
@@ -57,11 +58,11 @@ public class MicroserviceCacheKey {
   }
 
   public String getVersionRule() {
-    return VERSION_RULE;
+    return versionRule;
   }
 
   public String plainKey() {
-    return serviceName + "@" + appId + "@" + env;
+    return serviceName + "@" + appId + "@" + env + "@" + versionRule;
   }
 
   @Override
@@ -75,12 +76,13 @@ public class MicroserviceCacheKey {
     MicroserviceCacheKey that = (MicroserviceCacheKey) o;
     return Objects.equals(env, that.env) &&
         Objects.equals(appId, that.appId) &&
-        Objects.equals(serviceName, that.serviceName);
+        Objects.equals(serviceName, that.serviceName) &&
+        Objects.equals(versionRule, that.versionRule);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(env, appId, serviceName);
+    return Objects.hash(env, appId, serviceName, versionRule);
   }
 
   @Override
@@ -115,6 +117,11 @@ public class MicroserviceCacheKey {
       return this;
     }
 
+    public MicroserviceCacheKeyBuilder versionRule(String versionRule) {
+      microserviceCacheKey.versionRule = versionRule;
+      return this;
+    }
+
     MicroserviceCacheKeyBuilder() {
       microserviceCacheKey = new MicroserviceCacheKey();
     }
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java
index 03ce7ff..ec34776 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java
@@ -102,7 +102,7 @@ public class TestRegistry {
     Assert.assertNull(instanceList);
 
     MicroserviceInstances microserviceInstances =
-        RegistryUtils.findServiceInstances("default", "default", "0.0.1", "0");
+        RegistryUtils.findServiceInstances("default", "default", "0.0.1");
     List<MicroserviceInstance> instanceLists = microserviceInstances.getInstancesResponse().getInstances();
     Assert.assertEquals(1, instanceLists.size());
     Assert.assertEquals(RegistryUtils.getMicroservice().getServiceId(), instanceLists.get(0).getServiceId());
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheCheckerMock.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheCheckerMock.java
index 091c949..474e56e 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheCheckerMock.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheCheckerMock.java
@@ -104,7 +104,7 @@ public class TestInstanceCacheCheckerMock {
     new MockUp<RegistryUtils>() {
       @Mock
       MicroserviceInstances findServiceInstances(String appId, String serviceName,
-          String versionRule, String revision) {
+          String versionRule) {
         return findHolder.value;
       }
     };
@@ -141,7 +141,7 @@ public class TestInstanceCacheCheckerMock {
     new MockUp<RegistryUtils>() {
       @Mock
       MicroserviceInstances findServiceInstances(String appId, String serviceName,
-          String versionRule, String revision) {
+          String versionRule) {
         return findHolder.value;
       }
     };
@@ -178,7 +178,7 @@ public class TestInstanceCacheCheckerMock {
     new MockUp<RegistryUtils>() {
       @Mock
       MicroserviceInstances findServiceInstances(String appId, String serviceName,
-          String versionRule, String revision) {
+          String versionRule) {
         return findHolder.value;
       }
     };
@@ -211,7 +211,7 @@ public class TestInstanceCacheCheckerMock {
     new MockUp<RegistryUtils>() {
       @Mock
       MicroserviceInstances findServiceInstances(String appId, String serviceName,
-          String versionRule, String revision) {
+          String versionRule) {
         return findHolder.value;
       }
     };
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/EmptyMockServiceRegistry.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/EmptyMockServiceRegistry.java
index 80c3f97..3679bc4 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/EmptyMockServiceRegistry.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/EmptyMockServiceRegistry.java
@@ -95,7 +95,7 @@ public class EmptyMockServiceRegistry implements ServiceRegistry {
 
   @Override
   public MicroserviceInstances findServiceInstances(String appId, String microserviceName,
-      String microserviceVersionRule, String revision) {
+      String microserviceVersionRule) {
     return null;
   }
 
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKeyTest.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKeyTest.java
index b38f83e..53f82e8 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKeyTest.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKeyTest.java
@@ -35,7 +35,7 @@ public class MicroserviceCacheKeyTest {
     Assert.assertEquals("svc", microserviceCacheKey.getServiceName());
     Assert.assertEquals("app", microserviceCacheKey.getAppId());
     Assert.assertEquals("env", microserviceCacheKey.getEnv());
-    Assert.assertEquals("svc@app@env", microserviceCacheKey.toString());
+    Assert.assertEquals("svc@app@env@0.0.0.0+", microserviceCacheKey.toString());
 
     microserviceCacheKey =
         MicroserviceCacheKey.builder().serviceName("app:svc").appId("app").env("env").build();
@@ -83,6 +83,6 @@ public class MicroserviceCacheKeyTest {
   public void plainKey() {
     MicroserviceCacheKey microserviceCacheKey =
         MicroserviceCacheKey.builder().env("env").appId("app").serviceName("svc").build();
-    Assert.assertEquals("svc@app@env", microserviceCacheKey.plainKey());
+    Assert.assertEquals("svc@app@env@0.0.0.0+", microserviceCacheKey.plainKey());
   }
 }
\ No newline at end of file