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 <[email protected]>
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);