diff --git a/sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/NettyTransportClient.java b/sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/NettyTransportClient.java index e2038b50..23c9f2f4 100644 --- a/sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/NettyTransportClient.java +++ b/sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/NettyTransportClient.java @@ -238,10 +238,12 @@ public class NettyTransportClient implements ClusterTransportClient { } private int getCurrentId() { - if (idGenerator.get() > MAX_ID) { - idGenerator.set(0); - } - return idGenerator.incrementAndGet(); + int pre, next; + do { + pre = idGenerator.get(); + next = pre >= MAX_ID ? MIN_ID : pre + 1; + } while (!idGenerator.compareAndSet(pre, next)); + return next; } /*public CompletableFuture sendRequestAsync(ClusterRequest request) { @@ -266,5 +268,6 @@ public class NettyTransportClient implements ClusterTransportClient { return future; }*/ + private static final int MIN_ID = 1; private static final int MAX_ID = 999_999_999; }