{"record":{"id":"55070b52c2bd181f","repo":"apache/rocketmq","slug":"the-topic-s-is-conflict-with-system-topic","errorCode":null,"errorMessage":"The topic[%s] is conflict with system topic.","messagePattern":"The topic\\[(.+?)\\] is conflict with system topic\\.","errorType":"validation","errorClass":"MQClientException","httpStatus":null,"severity":"error","filePath":"client/src/main/java/org/apache/rocketmq/client/Validators.java","lineNumber":114,"sourceCode":"        if (UtilAll.isBlank(topic)) {\n            throw new MQClientException(\"The specified topic is blank\", null);\n        }\n\n        if (topic.length() > TOPIC_MAX_LENGTH) {\n            throw new MQClientException(\n                String.format(\"The specified topic is longer than topic max length %d.\", TOPIC_MAX_LENGTH), null);\n        }\n\n        if (isTopicOrGroupIllegal(topic)) {\n            throw new MQClientException(String.format(\n                    \"The specified topic[%s] contains illegal characters, allowing only %s\", topic,\n                    \"^[%|a-zA-Z0-9_-]+$\"), null);\n        }\n    }\n\n    public static void isSystemTopic(String topic) throws MQClientException {\n        if (TopicValidator.isSystemTopic(topic)) {\n            throw new MQClientException(\n                    String.format(\"The topic[%s] is conflict with system topic.\", topic), null);\n        }\n    }\n\n    public static void isNotAllowedSendTopic(String topic) throws MQClientException {\n        if (TopicValidator.isNotAllowedSendTopic(topic)) {\n            throw new MQClientException(\n                    String.format(\"Sending message to topic[%s] is forbidden.\", topic), null);\n        }\n    }\n\n    public static void checkTopicConfig(final TopicConfig topicConfig) throws MQClientException {\n        if (!PermName.isValid(topicConfig.getPerm())) {\n            throw new MQClientException(ResponseCode.NO_PERMISSION,\n                String.format(\"topicPermission value: %s is invalid.\", topicConfig.getPerm()));\n        }\n    }\n","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/apache/rocketmq/blob/293f5885719fc4aa3619446a1900f58ccfcfdd29/client/src/main/java/org/apache/rocketmq/client/Validators.java#L96-L132","documentation":"Validators.isSystemTopic throws when the topic matches a reserved system topic (per TopicValidator.isSystemTopic): TBW102, benchmark_topic*, OFFSET_MOVED_TIME_TABLE, SCHEDULE_TOPIC_XXXX, %RETRY%..., %DLQ%..., rmq_sys_*, and similar. User operations on these names are blocked to prevent corrupting broker internals.","triggerScenarios":"Sending to or creating a topic named like a system topic, e.g. producer.send to '%RETRY%mygroup' or mqadmin updateTopic -t SCHEDULE_TOPIC_XXXX; also validations in DefaultMQAdminExt topic creation.","commonSituations":"Choosing a business topic name that collides with rmq_sys_* or starts with %RETRY%/%DLQ%; tooling scripts that enumerate and recreate all topics including system ones.","solutions":["Rename the user topic so it does not match system patterns (avoid prefixes %RETRY%, %DLQ%, rmq_sys_, and the fixed names like TBW102).","Filter system topics out of admin scripts via TopicValidator.isSystemTopic before operating.","Reserve a naming prefix (e.g. 'app-') for user topics by convention."],"exampleFix":"// before\nadminTopic \"%RETRY%audit-group\" // collides with retry system topic\n\n// after\nadminTopic \"app-audit-retry-view\" // ordinary user topic","handlingStrategy":"validation","validationCode":"static boolean isUserTopic(String topic) {\n    return !org.apache.rocketmq.common.topic.TopicValidator.isSystemTopic(topic);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Adopt an application-specific topic prefix to avoid collisions with system names.","Filter system topics out of admin/automation scripts via TopicValidator.isSystemTopic."],"tags":["rocketmq","topic","system-topic","validation","naming"],"backgroundTag":null,"analyzedSha":"293f5885719fc4aa3619446a1900f58ccfcfdd29","analyzedAt":"2026-08-14T11:50:13.822Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}