From 07217f4f05266dabfafefc0a34a1acb894ff838f Mon Sep 17 00:00:00 2001 From: zjncs <18910855655@163.com> Date: Fri, 11 Sep 2026 13:41:27 +0800 Subject: [PATCH] fix(remoting): report version 0 for consumer groups without connections computeMinVersion kept its Integer.MAX_VALUE sentinel when the connection set was empty, so mqadmin consumerProgress printed HighestVersion (2147483647) for idle consumer groups whose clients had all disconnected. Return 0 for an empty set instead. --- .../remoting/protocol/body/ConsumerConnection.java | 3 +++ .../remoting/protocol/body/ConsumerConnectionTest.java | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnection.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnection.java index 4eb5d7da4ef..5e0e8bd633a 100644 --- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnection.java +++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnection.java @@ -35,6 +35,9 @@ public class ConsumerConnection extends RemotingSerializable { private ConsumeFromWhere consumeFromWhere; public int computeMinVersion() { + if (this.connectionSet.isEmpty()) { + return 0; + } int minVersion = Integer.MAX_VALUE; for (Connection c : this.connectionSet) { if (c.getVersion() < minVersion) { diff --git a/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnectionTest.java b/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnectionTest.java index e9d2fee1232..906aaa2b575 100644 --- a/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnectionTest.java +++ b/remoting/src/test/java/org/apache/rocketmq/remoting/protocol/body/ConsumerConnectionTest.java @@ -80,4 +80,11 @@ public void testComputeMinVersion() { int version = consumerConnection.computeMinVersion(); assertThat(version).isEqualTo(1); } + + @Test + public void testComputeMinVersionWithNoConnection() { + // a group without live connections must not be reported as HighestVersion + ConsumerConnection consumerConnection = new ConsumerConnection(); + assertThat(consumerConnection.computeMinVersion()).isEqualTo(0); + } }