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