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); + } }