From fa49f0cc49e9e8bc6f90cb0d94733e0dde8c7a8d Mon Sep 17 00:00:00 2001 From: yuluo-yx Date: Sat, 8 Aug 2026 14:34:28 +0800 Subject: [PATCH] [ISSUE #10829] fix(common): handle negative version values --- .../java/org/apache/rocketmq/common/MQVersion.java | 6 ++++++ .../org/apache/rocketmq/common/MQVersionTest.java | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/org/apache/rocketmq/common/MQVersion.java b/common/src/main/java/org/apache/rocketmq/common/MQVersion.java index 0c927814036..f3ea9747395 100644 --- a/common/src/main/java/org/apache/rocketmq/common/MQVersion.java +++ b/common/src/main/java/org/apache/rocketmq/common/MQVersion.java @@ -25,6 +25,9 @@ public class MQVersion { public static String getVersionDesc(int value) { Version[] versions = VERSION_VALUES; int length = versions.length; + if (value < 0) { + return versions[0].name(); + } if (value >= length) { return versions[length - 1].name(); } @@ -34,6 +37,9 @@ public static String getVersionDesc(int value) { public static Version value2Version(int value) { Version[] versions = VERSION_VALUES; int length = versions.length; + if (value < 0) { + return versions[0]; + } if (value >= length) { return versions[length - 1]; } diff --git a/common/src/test/java/org/apache/rocketmq/common/MQVersionTest.java b/common/src/test/java/org/apache/rocketmq/common/MQVersionTest.java index 51856b849e3..0fd4d6aa940 100644 --- a/common/src/test/java/org/apache/rocketmq/common/MQVersionTest.java +++ b/common/src/test/java/org/apache/rocketmq/common/MQVersionTest.java @@ -35,6 +35,11 @@ public void testGetVersionDesc_higherVersion() throws Exception { assertThat(MQVersion.getVersionDesc(Integer.MAX_VALUE)).isEqualTo(desc); } + @Test + public void testGetVersionDesc_NegativeVersion() { + assertThat(MQVersion.getVersionDesc(-1)).isEqualTo("V3_0_0_SNAPSHOT"); + } + @Test public void testValue2Version() throws Exception { assertThat(MQVersion.value2Version(0)).isEqualTo(MQVersion.Version.V3_0_0_SNAPSHOT); @@ -44,4 +49,9 @@ public void testValue2Version() throws Exception { public void testValue2Version_HigherVersion() throws Exception { assertThat(MQVersion.value2Version(Integer.MAX_VALUE)).isEqualTo(MQVersion.Version.HIGHER_VERSION); } -} \ No newline at end of file + + @Test + public void testValue2Version_NegativeVersion() { + assertThat(MQVersion.value2Version(-1)).isEqualTo(MQVersion.Version.V3_0_0_SNAPSHOT); + } +}