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();