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 2023/06/20 12:03:46 UTC

[servicecomb-java-chassis] branch 2.8.x updated: [SCB-2798]when using multiple registries instance may not get refresh… (#3836)

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch 2.8.x
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/2.8.x by this push:
     new 45910effe [SCB-2798]when using multiple registries instance may not get refresh… (#3836)
45910effe is described below

commit 45910effe258c718122330568f705293a96a43f2
Author: liubao68 <bi...@qq.com>
AuthorDate: Tue Jun 20 20:03:40 2023 +0800

    [SCB-2798]when using multiple registries instance may not get refresh… (#3836)
---
 .../registry/api/registry/MicroserviceInstances.java  | 19 ++++++++++++++++++-
 .../instance/TestInstanceCacheCheckerMock.java        |  4 ++--
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java
index 329826289..c6df49216 100644
--- a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java
+++ b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/api/registry/MicroserviceInstances.java
@@ -17,6 +17,15 @@
 
 package org.apache.servicecomb.registry.api.registry;
 
+import java.nio.charset.StandardCharsets;
+
+import javax.crypto.Mac;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.digest.HmacAlgorithms;
+import org.apache.commons.codec.digest.HmacUtils;
+import org.apache.commons.lang3.StringUtils;
+
 public class MicroserviceInstances {
   private boolean microserviceNotExist;
 
@@ -71,8 +80,16 @@ public class MicroserviceInstances {
 
   private void mergeRevision(MicroserviceInstances other) {
     if (!other.isMicroserviceNotExist() && other.needRefresh) {
-      this.revision = other.getRevision();
+      Mac mac = HmacUtils.getInitializedMac(HmacAlgorithms.HMAC_SHA_1, stringToBytes(this.revision));
+      this.revision = Base64.encodeBase64String(mac.doFinal(stringToBytes(other.revision)));
+    }
+  }
+
+  private byte[] stringToBytes(String input) {
+    if (StringUtils.isEmpty(input)) {
+      input = "@";
     }
+    return input.getBytes(StandardCharsets.UTF_8);
   }
 
   private void mergeMicroserviceNotExist(boolean microserviceNotExist) {
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 771bbcfe1..a1c93befc 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
@@ -197,8 +197,8 @@ public class TestInstanceCacheCheckerMock {
     instanceCacheResult.setMicroserviceName(microserviceName);
     instanceCacheResult.setStatus(Status.UNKNOWN);
     instanceCacheResult.setPulledInstances(new ArrayList<>());
-    instanceCacheResult.setDetail(
-        "revision is different, will be synchronized in next pull. local revision=first, remote revision=second");
+    instanceCacheResult.setDetail("revision is different, will be synchronized in next pull. "
+        + "local revision=Fv/f6YTFogBi3MiMIkVuh2DZLvU=, remote revision=second");
     expectedSummary.getProducers().add(instanceCacheResult);
     expectedSummary.setStatus(Status.UNKNOWN);