Skip to content

Commit e84f4c8

Browse files
authored
[SCB-2064]Fix RegistryUtils API not using version rule parameter problem (#1916)
1 parent 24c6734 commit e84f4c8

10 files changed

Lines changed: 41 additions & 29 deletions

File tree

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/RegistryUtils.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,9 @@ public static List<MicroserviceInstance> findServiceInstance(String appId, Strin
154154
String versionRule) {
155155
MicroserviceCache serviceCache = aggregateServiceRegistryCache.findServiceCache(
156156
MicroserviceCacheKey.builder()
157-
.appId(appId).serviceName(serviceName).env(getMicroservice().getEnvironment())
157+
.appId(appId).serviceName(serviceName)
158+
.env(getMicroservice().getEnvironment())
159+
.versionRule(versionRule)
158160
.build()
159161
);
160162
return MicroserviceCacheStatus.SERVICE_NOT_FOUND.equals(serviceCache.getStatus()) ?
@@ -176,9 +178,13 @@ public static Microservice getMicroservice(String microserviceId) {
176178
}
177179

178180
public static MicroserviceInstances findServiceInstances(String appId, String serviceName,
179-
String versionRule, String revision) {
181+
String versionRule) {
180182
MicroserviceCache serviceCache = aggregateServiceRegistryCache.findServiceCache(
181-
MicroserviceCacheKey.builder().appId(appId).serviceName(serviceName).env(getMicroservice().getEnvironment())
183+
MicroserviceCacheKey.builder()
184+
.appId(appId)
185+
.serviceName(serviceName)
186+
.env(getMicroservice().getEnvironment())
187+
.versionRule(versionRule)
182188
.build());
183189
return convertCacheToMicroserviceInstances(serviceCache);
184190
}

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceCenterDiscovery.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ public MicroserviceInstance getMicroserviceInstance(String serviceId, String ins
7979
public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule) {
8080
return RegistryUtils.findServiceInstances(appId,
8181
serviceName,
82-
versionRule,
83-
revision);
82+
versionRule);
8483
}
8584

8685
@Override

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/ServiceRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ List<MicroserviceInstance> findServiceInstance(String appId, String microservice
7777
String microserviceVersionRule);
7878

7979
MicroserviceInstances findServiceInstances(String appId, String microserviceName,
80-
String microserviceVersionRule, String revision);
80+
String microserviceVersionRule);
8181

8282
MicroserviceCache findMicroserviceCache(MicroserviceCacheKey microserviceCacheKey);
8383

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ protected InstanceCacheResult check(MicroserviceVersions microserviceVersions) {
8787
MicroserviceInstances microserviceInstances = RegistryUtils
8888
.findServiceInstances(microserviceVersions.getAppId(),
8989
microserviceVersions.getMicroserviceName(),
90-
DefinitionConst.VERSION_RULE_ALL,
91-
null);
90+
DefinitionConst.VERSION_RULE_ALL);
9291
if (microserviceInstances == null) {
9392
instanceCacheResult.setStatus(Status.UNKNOWN);
9493
instanceCacheResult.setDetail("failed to find instances from service center");

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/AbstractServiceRegistry.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_DEFAULT_REGISTER_BY;
2020
import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_FRAMEWORK_DEFAULT_NAME;
2121

22-
import java.util.ArrayList;
23-
import java.util.Collections;
2422
import java.util.HashMap;
2523
import java.util.List;
2624
import java.util.Map;
@@ -40,10 +38,7 @@
4038
import org.apache.servicecomb.registry.api.registry.MicroserviceFactory;
4139
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
4240
import org.apache.servicecomb.registry.api.registry.MicroserviceInstances;
43-
import org.apache.servicecomb.registry.consumer.MicroserviceManager;
44-
import org.apache.servicecomb.registry.consumer.StaticMicroserviceVersions;
4541
import org.apache.servicecomb.registry.definition.MicroserviceDefinition;
46-
import org.apache.servicecomb.registry.definition.MicroserviceNameParser;
4742
import org.apache.servicecomb.serviceregistry.RegistryUtils;
4843
import org.apache.servicecomb.serviceregistry.ServiceRegistry;
4944
import org.apache.servicecomb.serviceregistry.api.Const;
@@ -196,20 +191,25 @@ public boolean unregisterInstance() {
196191
return true;
197192
}
198193

194+
@Override
199195
public List<MicroserviceInstance> findServiceInstance(String appId, String serviceName,
200196
String versionRule) {
201-
MicroserviceInstances instances = findServiceInstances(appId, serviceName, versionRule, null);
197+
MicroserviceInstances instances = findServiceInstances(appId, serviceName, versionRule);
202198
if (instances == null || instances.isMicroserviceNotExist()) {
203199
return null;
204200
}
205201
return instances.getInstancesResponse().getInstances();
206202
}
207203

204+
@Override
208205
public MicroserviceInstances findServiceInstances(String appId, String serviceName,
209-
String versionRule, String revision) {
206+
String versionRule) {
210207
MicroserviceCache microserviceCache = serviceRegistryCache
211208
.findServiceCache(MicroserviceCacheKey.builder()
212-
.serviceName(serviceName).appId(appId).env(microservice.getEnvironment()).build());
209+
.serviceName(serviceName).appId(appId)
210+
.env(microservice.getEnvironment())
211+
.versionRule(versionRule)
212+
.build());
213213
return RegistryUtils.convertCacheToMicroserviceInstances(microserviceCache);
214214
}
215215

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

231+
@Override
231232
public boolean updateInstanceProperties(Map<String, String> instanceProperties) {
232233
MicroserviceInstance microserviceInstance = microservice.getInstance();
233234
boolean success = srClient.updateInstanceProperties(microserviceInstance.getServiceId(),

service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKey.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class MicroserviceCacheKey {
2929

3030
private String serviceName;
3131

32-
private static final String VERSION_RULE = DefinitionConst.VERSION_RULE_ALL;
32+
private String versionRule = DefinitionConst.VERSION_RULE_ALL;
3333

3434
public static MicroserviceCacheKeyBuilder builder() {
3535
return new MicroserviceCacheKeyBuilder();
@@ -42,6 +42,7 @@ public void validate() {
4242
Objects.requireNonNull(this.env, "microserviceCacheKey.env is null");
4343
Objects.requireNonNull(this.appId, "microserviceCacheKey.appId is null");
4444
Objects.requireNonNull(this.serviceName, "microserviceCacheKey.serviceName is null");
45+
Objects.requireNonNull(this.versionRule, "microserviceCacheKey.versionRule is null");
4546
}
4647

4748
public String getEnv() {
@@ -57,11 +58,11 @@ public String getServiceName() {
5758
}
5859

5960
public String getVersionRule() {
60-
return VERSION_RULE;
61+
return versionRule;
6162
}
6263

6364
public String plainKey() {
64-
return serviceName + "@" + appId + "@" + env;
65+
return serviceName + "@" + appId + "@" + env + "@" + versionRule;
6566
}
6667

6768
@Override
@@ -75,12 +76,13 @@ public boolean equals(Object o) {
7576
MicroserviceCacheKey that = (MicroserviceCacheKey) o;
7677
return Objects.equals(env, that.env) &&
7778
Objects.equals(appId, that.appId) &&
78-
Objects.equals(serviceName, that.serviceName);
79+
Objects.equals(serviceName, that.serviceName) &&
80+
Objects.equals(versionRule, that.versionRule);
7981
}
8082

8183
@Override
8284
public int hashCode() {
83-
return Objects.hash(env, appId, serviceName);
85+
return Objects.hash(env, appId, serviceName, versionRule);
8486
}
8587

8688
@Override
@@ -115,6 +117,11 @@ public MicroserviceCacheKeyBuilder serviceName(String serviceName) {
115117
return this;
116118
}
117119

120+
public MicroserviceCacheKeyBuilder versionRule(String versionRule) {
121+
microserviceCacheKey.versionRule = versionRule;
122+
return this;
123+
}
124+
118125
MicroserviceCacheKeyBuilder() {
119126
microserviceCacheKey = new MicroserviceCacheKey();
120127
}

service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/TestRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public void testDelegate() {
102102
Assert.assertNull(instanceList);
103103

104104
MicroserviceInstances microserviceInstances =
105-
RegistryUtils.findServiceInstances("default", "default", "0.0.1", "0");
105+
RegistryUtils.findServiceInstances("default", "default", "0.0.1");
106106
List<MicroserviceInstance> instanceLists = microserviceInstances.getInstancesResponse().getInstances();
107107
Assert.assertEquals(1, instanceLists.size());
108108
Assert.assertEquals(RegistryUtils.getMicroservice().getServiceId(), instanceLists.get(0).getServiceId());

service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheCheckerMock.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public void check_findInstances_failed() {
104104
new MockUp<RegistryUtils>() {
105105
@Mock
106106
MicroserviceInstances findServiceInstances(String appId, String serviceName,
107-
String versionRule, String revision) {
107+
String versionRule) {
108108
return findHolder.value;
109109
}
110110
};
@@ -141,7 +141,7 @@ public void check_findInstances_serviceNotExist() {
141141
new MockUp<RegistryUtils>() {
142142
@Mock
143143
MicroserviceInstances findServiceInstances(String appId, String serviceName,
144-
String versionRule, String revision) {
144+
String versionRule) {
145145
return findHolder.value;
146146
}
147147
};
@@ -178,7 +178,7 @@ public void check_findInstances_revisionNotMatch() {
178178
new MockUp<RegistryUtils>() {
179179
@Mock
180180
MicroserviceInstances findServiceInstances(String appId, String serviceName,
181-
String versionRule, String revision) {
181+
String versionRule) {
182182
return findHolder.value;
183183
}
184184
};
@@ -211,7 +211,7 @@ public void check_findInstances_cacheNotMatch() {
211211
new MockUp<RegistryUtils>() {
212212
@Mock
213213
MicroserviceInstances findServiceInstances(String appId, String serviceName,
214-
String versionRule, String revision) {
214+
String versionRule) {
215215
return findHolder.value;
216216
}
217217
};

service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/EmptyMockServiceRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public List<MicroserviceInstance> findServiceInstance(String appId, String micro
9595

9696
@Override
9797
public MicroserviceInstances findServiceInstances(String appId, String microserviceName,
98-
String microserviceVersionRule, String revision) {
98+
String microserviceVersionRule) {
9999
return null;
100100
}
101101

service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/registry/cache/MicroserviceCacheKeyTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void constructors() {
3535
Assert.assertEquals("svc", microserviceCacheKey.getServiceName());
3636
Assert.assertEquals("app", microserviceCacheKey.getAppId());
3737
Assert.assertEquals("env", microserviceCacheKey.getEnv());
38-
Assert.assertEquals("svc@app@env", microserviceCacheKey.toString());
38+
Assert.assertEquals("svc@app@env@0.0.0.0+", microserviceCacheKey.toString());
3939

4040
microserviceCacheKey =
4141
MicroserviceCacheKey.builder().serviceName("app:svc").appId("app").env("env").build();
@@ -83,6 +83,6 @@ public void equals_and_hashcode() {
8383
public void plainKey() {
8484
MicroserviceCacheKey microserviceCacheKey =
8585
MicroserviceCacheKey.builder().env("env").appId("app").serviceName("svc").build();
86-
Assert.assertEquals("svc@app@env", microserviceCacheKey.plainKey());
86+
Assert.assertEquals("svc@app@env@0.0.0.0+", microserviceCacheKey.plainKey());
8787
}
8888
}

0 commit comments

Comments
 (0)