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