From 578188eaaa036649bf291b93fc5b77dfbc71e46c Mon Sep 17 00:00:00 2001 From: jianliu <397029583@qq.com> Date: Fri, 28 Mar 2025 23:24:54 +0800 Subject: [PATCH] =?UTF-8?q?#592=20=E9=87=8D=E6=96=B0=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=97=B6=E4=BD=BF=E7=94=A8=E6=9C=80=E5=90=8E=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E7=9A=84=E6=B3=A8=E5=86=8C=E5=AE=9E=E4=BE=8B=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../discovery/client/flow/RegisterStateManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/flow/RegisterStateManager.java b/polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/flow/RegisterStateManager.java index 97e26096b..afc3582ce 100644 --- a/polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/flow/RegisterStateManager.java +++ b/polaris-discovery/polaris-discovery-client/src/main/java/com/tencent/polaris/discovery/client/flow/RegisterStateManager.java @@ -21,6 +21,7 @@ import com.tencent.polaris.api.rpc.InstanceDeregisterRequest; import com.tencent.polaris.api.rpc.InstanceRegisterRequest; import com.tencent.polaris.client.api.SDKContext; + import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; @@ -47,7 +48,9 @@ public static RegisterState putRegisterState(SDKContext sdkContext, String registerStateKey = buildRegisterStateKey(instanceRegisterRequest); Map sdkRegisterStates = REGISTER_STATES.computeIfAbsent( sdkContext.getValueContext().getClientId(), clientId -> new ConcurrentHashMap<>()); - if (sdkRegisterStates.containsKey(registerStateKey)) { + RegisterState existsRegisterState = sdkRegisterStates.get(registerStateKey); + if (existsRegisterState != null) { + existsRegisterState.setInstanceRegisterRequest(instanceRegisterRequest); return null; } return sdkRegisterStates.computeIfAbsent(registerStateKey, unused -> { @@ -90,7 +93,7 @@ private static String buildRegisterStateKey(CommonProviderBaseEntity baseEntity) public static final class RegisterState { - private InstanceRegisterRequest instanceRegisterRequest; + private volatile InstanceRegisterRequest instanceRegisterRequest; private long firstRegisterTime; private ScheduledFuture taskFuture; private int heartbeatFailCounter = 0;