From 1cfa59df19f70813b5b958391d7fd8d69122bafe Mon Sep 17 00:00:00 2001 From: Senrian <47714364+Senrian@users.noreply.github.com> Date: Sun, 22 Mar 2026 19:50:23 +0800 Subject: [PATCH] fix: use TreeMap to ensure consistent iteration order by port key Fixes the flaky test ThreadPoolStatusCheckerTest where Map.entrySet() iteration order is undefined. Using TreeMap sorts entries by port key, making the status message deterministic. --- .../rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java index 979d9cc156f..0af5c26a8c1 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java @@ -24,6 +24,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel; import java.util.Map; +import java.util.TreeMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.ThreadPoolExecutor; @@ -44,7 +45,11 @@ public Status check() { StringBuilder msg = new StringBuilder(); Status.Level level = Status.Level.OK; - for (Map.Entry entry : executors.entrySet()) { + + // Use TreeMap to ensure consistent iteration order by port key + Map sortedExecutors = new TreeMap<>(executors); + + for (Map.Entry entry : sortedExecutors.entrySet()) { String port = entry.getKey(); ExecutorService executor = (ExecutorService) entry.getValue();