From 29197c4561307f9e30d8d7894e15e812d6cd1793 Mon Sep 17 00:00:00 2001 From: fuchong Date: Thu, 6 Aug 2026 10:21:45 +0800 Subject: [PATCH] [ISSUE #10817] Upgrade SpotBugs for JDK 21 compatibility --- .../apache/rocketmq/example/benchmark/BatchProducer.java | 6 +++--- .../org/apache/rocketmq/example/benchmark/Producer.java | 4 ++-- pom.xml | 3 +-- .../rocketmq/proxy/service/route/MessageQueueSelector.java | 7 +++---- .../rocketmq/remoting/netty/NettyRemotingClient.java | 5 ++--- .../java/org/apache/rocketmq/store/kv/CompactionStore.java | 4 ++-- .../java/org/apache/rocketmq/test/util/RandomUtil.java | 1 - 7 files changed, 13 insertions(+), 17 deletions(-) diff --git a/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java b/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java index 21a4b3b7e77..2e220905205 100644 --- a/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java +++ b/example/src/main/java/org/apache/rocketmq/example/benchmark/BatchProducer.java @@ -20,10 +20,10 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.LongAdder; @@ -322,7 +322,7 @@ private static void setProperties(int propertySize, List msgs) { msg.getProperties().clear(); } - int startValue = (new Random(System.currentTimeMillis())).nextInt(100); + int startValue = ThreadLocalRandom.current().nextInt(100); int size = 0; for (int i = 0; ; i++) { String prop1 = "prop" + i, prop1V = "hello" + startValue; @@ -449,4 +449,4 @@ public void run() { public void shutdown() { executorService.shutdown(); } -} \ No newline at end of file +} diff --git a/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java b/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java index a945283f576..a86d2d7183f 100644 --- a/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java +++ b/example/src/main/java/org/apache/rocketmq/example/benchmark/Producer.java @@ -43,13 +43,13 @@ import java.util.Arrays; import java.util.LinkedList; -import java.util.Random; import java.util.TimerTask; import java.util.concurrent.TimeUnit; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicLong; public class Producer { @@ -197,7 +197,7 @@ public void run() { msg.getProperties().clear(); } int i = 0; - int startValue = (new Random(System.currentTimeMillis())).nextInt(100); + int startValue = ThreadLocalRandom.current().nextInt(100); int size = 0; while (true) { String prop1 = "prop" + i, prop1V = "hello" + startValue; diff --git a/pom.xml b/pom.xml index 16320028c94..645ad51225a 100644 --- a/pom.xml +++ b/pom.xml @@ -170,7 +170,7 @@ 0.8.5 2.19.1 3.0.2 - 4.2.2 + 4.8.6.8 3.4.2 2.10.4 2.19.1 @@ -451,7 +451,6 @@ true false - true ${project.root}/style/spotbugs-suppressions.xml High Max diff --git a/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/MessageQueueSelector.java b/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/MessageQueueSelector.java index 0b028fa461a..8f08c1df0e5 100644 --- a/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/MessageQueueSelector.java +++ b/proxy/src/main/java/org/apache/rocketmq/proxy/service/route/MessageQueueSelector.java @@ -24,9 +24,9 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Random; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; @@ -67,9 +67,8 @@ public MessageQueueSelector(TopicRouteWrapper topicRouteWrapper, boolean read, this.queues.addAll(buildWrite(topicRouteWrapper)); } buildBrokerActingQueues(topicRouteWrapper.getTopicName(), this.queues); - Random random = new Random(); - this.queueIndex = new AtomicInteger(random.nextInt()); - this.brokerIndex = new AtomicInteger(random.nextInt()); + this.queueIndex = new AtomicInteger(ThreadLocalRandom.current().nextInt()); + this.brokerIndex = new AtomicInteger(ThreadLocalRandom.current().nextInt()); if (priorityProvider == null) { priorityProvider = new DefaultMessageQueuePriorityProvider(); diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java index e39967e3f8d..94d5ff9f3f6 100644 --- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java @@ -78,7 +78,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Random; import java.util.Set; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CompletableFuture; @@ -86,6 +85,7 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -180,8 +180,7 @@ public NettyRemotingClient(final NettyClientConfig nettyClientConfig, } private static int initValueIndex() { - Random r = new Random(); - return r.nextInt(999); + return ThreadLocalRandom.current().nextInt(999); } private void loadSocksProxyJson() { diff --git a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java index 639084fa2d8..8be5c6da7bb 100644 --- a/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java +++ b/store/src/main/java/org/apache/rocketmq/store/kv/CompactionStore.java @@ -25,9 +25,9 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.Random; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import org.apache.rocketmq.common.ThreadFactoryImpl; import org.apache.rocketmq.common.TopicConfig; @@ -149,7 +149,7 @@ private CompactionLog loadAndGetClog(String topic, int queueId) { try { v = new CompactionLog(defaultMessageStore, this, topic, queueId); v.load(true); - int randomDelay = 1000 + new Random(System.currentTimeMillis()).nextInt(compactionInterval); + int randomDelay = 1000 + ThreadLocalRandom.current().nextInt(compactionInterval); compactionSchedule.scheduleWithFixedDelay(v::doCompaction, compactionInterval + randomDelay, compactionInterval + randomDelay, TimeUnit.MILLISECONDS); } catch (IOException e) { log.error("create compactionLog exception: ", e); diff --git a/test/src/main/java/org/apache/rocketmq/test/util/RandomUtil.java b/test/src/main/java/org/apache/rocketmq/test/util/RandomUtil.java index 5b62a6377d8..4caaa916e11 100644 --- a/test/src/main/java/org/apache/rocketmq/test/util/RandomUtil.java +++ b/test/src/main/java/org/apache/rocketmq/test/util/RandomUtil.java @@ -262,7 +262,6 @@ public static int[] getRandomArray(int min, int max, int n) { } int[] result = new int[n]; - Random rd = new Random(); int index = 0; for (int i = 0; i < result.length; i++) { index = rd.nextInt(len--);