This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 44e49a99d0 [ISSUE #11466] Extract group max length into a field in
TopicValidator (#11467)
44e49a99d0 is described below
commit 44e49a99d05867869b81c8d9a55baa7b9f17637e
Author: Quan <[email protected]>
AuthorDate: Tue Oct 27 11:17:30 2026 +0800
[ISSUE #11466] Extract group max length into a field in TopicValidator
(#11467)
---
.../rocketmq/common/topic/TopicValidator.java | 11 +++++++++--
.../rocketmq/common/topic/TopicValidatorTest.java | 21 +++++++++++++++++++++
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git
a/common/src/main/java/org/apache/rocketmq/common/topic/TopicValidator.java
b/common/src/main/java/org/apache/rocketmq/common/topic/TopicValidator.java
index ade6289c67..f1b59848c9 100644
--- a/common/src/main/java/org/apache/rocketmq/common/topic/TopicValidator.java
+++ b/common/src/main/java/org/apache/rocketmq/common/topic/TopicValidator.java
@@ -48,6 +48,8 @@ public class TopicValidator {
private static final int GROUP_MAX_LENGTH = 120;
private static final int RETRY_OR_DLQ_TOPIC_MAX_LENGTH = 255;
+ private static volatile int groupMaxLength = GROUP_MAX_LENGTH;
+
private static final Set<String> SYSTEM_TOPIC_SET = new HashSet<>();
/**
@@ -139,6 +141,11 @@ public class TopicValidator {
return new ValidateResult(true, "");
}
+ public static void setGroupMaxLength(int maxLength) {
+ groupMaxLength = maxLength <= 0 ? GROUP_MAX_LENGTH
+ : Math.min(maxLength, RETRY_OR_DLQ_TOPIC_MAX_LENGTH);
+ }
+
public static ValidateResult validateGroup(String group) {
if (UtilAll.isBlank(group)) {
@@ -150,8 +157,8 @@ public class TopicValidator {
return new ValidateResult(false, falseRemark);
}
- if (group.length() > GROUP_MAX_LENGTH) {
- String falseRemark = "The specified group: " + group + ", is
longer than group max length: " + GROUP_MAX_LENGTH;
+ if (group.length() > groupMaxLength) {
+ String falseRemark = "The specified group: " + group + ", is
longer than group max length: " + groupMaxLength;
return new ValidateResult(false, falseRemark);
}
diff --git
a/common/src/test/java/org/apache/rocketmq/common/topic/TopicValidatorTest.java
b/common/src/test/java/org/apache/rocketmq/common/topic/TopicValidatorTest.java
index 0541c7f6d2..879b9a5f71 100644
---
a/common/src/test/java/org/apache/rocketmq/common/topic/TopicValidatorTest.java
+++
b/common/src/test/java/org/apache/rocketmq/common/topic/TopicValidatorTest.java
@@ -87,6 +87,27 @@ public class TopicValidatorTest {
assertThat(res.isValid()).isFalse();
}
+ @Test
+ public void testGroupValidator_WithCustomMaxLength() {
+ try {
+ TopicValidator.setGroupMaxLength(255);
+
assertThat(TopicValidator.validateGroup(generateString2(255)).isValid()).isTrue();
+
assertThat(TopicValidator.validateGroup(generateString2(256)).isValid()).isFalse();
+
+ // values above 255 are capped at 255
+ TopicValidator.setGroupMaxLength(300);
+
assertThat(TopicValidator.validateGroup(generateString2(255)).isValid()).isTrue();
+
assertThat(TopicValidator.validateGroup(generateString2(256)).isValid()).isFalse();
+
+ // non-positive values fall back to the default of 120
+ TopicValidator.setGroupMaxLength(0);
+
assertThat(TopicValidator.validateGroup(generateString2(120)).isValid()).isTrue();
+
assertThat(TopicValidator.validateGroup(generateString2(121)).isValid()).isFalse();
+ } finally {
+ TopicValidator.setGroupMaxLength(120);
+ }
+ }
+
@Test
public void testAddSystemTopic() {
String topic = "SYSTEM_TOPIC_TEST";