This is an automated email from the ASF dual-hosted git repository. wujimin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push: new 27a7556 [SCB-786] when instances cache is not sync to SC caused by bug, auto fix it. 27a7556 is described below commit 27a75565e8331e7b06fa003d1417a72b30847d9b Author: wujimin <wuji...@huawei.com> AuthorDate: Mon Jul 30 11:45:39 2018 +0800 [SCB-786] when instances cache is not sync to SC caused by bug, auto fix it. --- .../serviceregistry/consumer/MicroserviceVersions.java | 4 ++++ .../serviceregistry/diagnosis/instance/InstanceCacheChecker.java | 4 ++++ .../diagnosis/instance/TestInstanceCacheChecker.java | 8 ++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java index f867f6a..ab4f479 100644 --- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java +++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/consumer/MicroserviceVersions.java @@ -113,6 +113,10 @@ public class MicroserviceVersions { return revision; } + public void setRevision(String revision) { + this.revision = revision; + } + public List<MicroserviceInstance> getPulledInstances() { return pulledInstances; } diff --git a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java index 8e0e1d7..28fb4b6 100644 --- a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java +++ b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/InstanceCacheChecker.java @@ -125,6 +125,10 @@ public class InstanceCacheChecker { remote); instanceCacheResult.setStatus(Status.ABNORMAL); instanceCacheResult.setDetail("instance cache not match"); + + // auto fix, will do a full pull request when invoke MicroserviceVersions.pullInstances + microserviceVersions.setRevision(null); + return instanceCacheResult; } diff --git a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java index b932070..c84cc3e 100644 --- a/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java +++ b/service-registry/src/test/java/org/apache/servicecomb/serviceregistry/diagnosis/instance/TestInstanceCacheChecker.java @@ -26,6 +26,7 @@ import org.apache.servicecomb.serviceregistry.api.registry.Microservice; import org.apache.servicecomb.serviceregistry.api.registry.MicroserviceInstance; import org.apache.servicecomb.serviceregistry.api.response.FindInstancesResponse; import org.apache.servicecomb.serviceregistry.client.http.MicroserviceInstances; +import org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions; import org.apache.servicecomb.serviceregistry.definition.DefinitionConst; import org.apache.servicecomb.serviceregistry.diagnosis.Status; import org.apache.servicecomb.serviceregistry.registry.ServiceRegistryFactory; @@ -216,8 +217,10 @@ public class TestInstanceCacheChecker { registerMicroservice(appId, microserviceName); - serviceRegistry.getAppManager() - .getOrCreateMicroserviceVersionRule(appId, microserviceName, DefinitionConst.VERSION_RULE_ALL); + MicroserviceVersions microserviceVersions = serviceRegistry.getAppManager() + .getOrCreateMicroserviceVersions(appId, microserviceName); + microserviceVersions.setRevision("first"); + microserviceVersions.getOrCreateMicroserviceVersionRule(DefinitionConst.VERSION_RULE_ALL); Holder<MicroserviceInstances> newFindHolder = createFindServiceInstancesResult(); newFindHolder.value.getInstancesResponse().getInstances().add(new MicroserviceInstance()); @@ -234,5 +237,6 @@ public class TestInstanceCacheChecker { expectedSummary.setStatus(Status.ABNORMAL); Assert.assertEquals(Json.encode(expectedSummary), Json.encode(instanceCacheSummary)); + Assert.assertNull(microserviceVersions.getRevision()); } }