Skip to content

Commit

Permalink
[SCB-2064]Fix RegistryUtils API not using version rule parameter problem
Browse files Browse the repository at this point in the history
  • Loading branch information
liubao68 committed Aug 11, 2020
1 parent d83164b commit acb753a
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 29 deletions.
Expand Up @@ -154,7 +154,9 @@ public static List<MicroserviceInstance> findServiceInstance(String appId, Strin
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()) ?
Expand All @@ -176,9 +178,13 @@ public static Microservice getMicroservice(String microserviceId) {
}

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);
}
Expand Down
Expand Up @@ -79,8 +79,7 @@ public MicroserviceInstance getMicroserviceInstance(String serviceId, String ins
public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
return RegistryUtils.findServiceInstances(appId,
serviceName,
versionRule,
revision);
versionRule);
}

@Override
Expand Down
Expand Up @@ -77,7 +77,7 @@ List<MicroserviceInstance> findServiceInstance(String appId, String microservice
String microserviceVersionRule);

MicroserviceInstances findServiceInstances(String appId, String microserviceName,
String microserviceVersionRule, String revision);
String microserviceVersionRule);

MicroserviceCache findMicroserviceCache(MicroserviceCacheKey microserviceCacheKey);

Expand Down
Expand Up @@ -87,8 +87,7 @@ protected InstanceCacheResult check(MicroserviceVersions microserviceVersions) {
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");
Expand Down
Expand Up @@ -19,8 +19,6 @@
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;
Expand All @@ -40,10 +38,7 @@
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;
Expand Down Expand Up @@ -196,20 +191,25 @@ public boolean unregisterInstance() {
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);
}

Expand All @@ -228,6 +228,7 @@ public boolean updateMicroserviceProperties(Map<String, String> properties) {
return success;
}

@Override
public boolean updateInstanceProperties(Map<String, String> instanceProperties) {
MicroserviceInstance microserviceInstance = microservice.getInstance();
boolean success = srClient.updateInstanceProperties(microserviceInstance.getServiceId(),
Expand Down
Expand Up @@ -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();
Expand All @@ -42,6 +42,7 @@ public void validate() {
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() {
Expand All @@ -57,11 +58,11 @@ public String getServiceName() {
}

public String getVersionRule() {
return VERSION_RULE;
return versionRule;
}

public String plainKey() {
return serviceName + "@" + appId + "@" + env;
return serviceName + "@" + appId + "@" + env + "@" + versionRule;
}

@Override
Expand All @@ -75,12 +76,13 @@ public boolean equals(Object o) {
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
Expand Down Expand Up @@ -115,6 +117,11 @@ public MicroserviceCacheKeyBuilder serviceName(String serviceName) {
return this;
}

public MicroserviceCacheKeyBuilder versionRule(String versionRule) {
microserviceCacheKey.versionRule = versionRule;
return this;
}

MicroserviceCacheKeyBuilder() {
microserviceCacheKey = new MicroserviceCacheKey();
}
Expand Down
Expand Up @@ -102,7 +102,7 @@ public void testDelegate() {
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());
Expand Down
Expand Up @@ -104,7 +104,7 @@ public void check_findInstances_failed() {
new MockUp<RegistryUtils>() {
@Mock
MicroserviceInstances findServiceInstances(String appId, String serviceName,
String versionRule, String revision) {
String versionRule) {
return findHolder.value;
}
};
Expand Down Expand Up @@ -141,7 +141,7 @@ public void check_findInstances_serviceNotExist() {
new MockUp<RegistryUtils>() {
@Mock
MicroserviceInstances findServiceInstances(String appId, String serviceName,
String versionRule, String revision) {
String versionRule) {
return findHolder.value;
}
};
Expand Down Expand Up @@ -178,7 +178,7 @@ public void check_findInstances_revisionNotMatch() {
new MockUp<RegistryUtils>() {
@Mock
MicroserviceInstances findServiceInstances(String appId, String serviceName,
String versionRule, String revision) {
String versionRule) {
return findHolder.value;
}
};
Expand Down Expand Up @@ -211,7 +211,7 @@ public void check_findInstances_cacheNotMatch() {
new MockUp<RegistryUtils>() {
@Mock
MicroserviceInstances findServiceInstances(String appId, String serviceName,
String versionRule, String revision) {
String versionRule) {
return findHolder.value;
}
};
Expand Down
Expand Up @@ -95,7 +95,7 @@ public List<MicroserviceInstance> findServiceInstance(String appId, String micro

@Override
public MicroserviceInstances findServiceInstances(String appId, String microserviceName,
String microserviceVersionRule, String revision) {
String microserviceVersionRule) {
return null;
}

Expand Down
Expand Up @@ -35,7 +35,7 @@ public void constructors() {
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();
Expand Down Expand Up @@ -83,6 +83,6 @@ public void equals_and_hashcode() {
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());
}
}

0 comments on commit acb753a

Please sign in to comment.