From 8f27b001c70c475661c04d7b06d57eddfc785319 Mon Sep 17 00:00:00 2001 From: yx9o Date: Thu, 17 Jul 2025 21:48:36 +0800 Subject: [PATCH 1/2] [ISSUE #9553] Improve performance by avoiding repeated get(key) --- .../org/apache/rocketmq/broker/client/ConsumerManager.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java index 341bbb5dad1..f8429207950 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java @@ -22,6 +22,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -386,11 +387,7 @@ public void scanNotActiveChannel() { } public HashSet queryTopicConsumeByWho(final String topic) { - HashSet groups = new HashSet<>(); - if (this.topicGroupTable.get(topic) != null) { - groups.addAll(this.topicGroupTable.get(topic)); - } - return groups; + return new HashSet<>(Optional.ofNullable(topicGroupTable.get(topic)).orElse(new HashSet<>())); } public void appendConsumerIdsChangeListener(ConsumerIdsChangeListener listener) { From 730526f0273c89bd2025dea45e6e01e0d681f49b Mon Sep 17 00:00:00 2001 From: yx9o Date: Sat, 19 Jul 2025 20:31:44 +0800 Subject: [PATCH 2/2] Update --- .../java/org/apache/rocketmq/broker/client/ConsumerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java index f8429207950..176456043b0 100644 --- a/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java +++ b/broker/src/main/java/org/apache/rocketmq/broker/client/ConsumerManager.java @@ -387,7 +387,7 @@ public void scanNotActiveChannel() { } public HashSet queryTopicConsumeByWho(final String topic) { - return new HashSet<>(Optional.ofNullable(topicGroupTable.get(topic)).orElse(new HashSet<>())); + return new HashSet<>(Optional.ofNullable(topicGroupTable.get(topic)).orElseGet(HashSet::new)); } public void appendConsumerIdsChangeListener(ConsumerIdsChangeListener listener) {