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());
   }
 }

Reply via email to