{"record":{"id":"8071bef866b036d1","repo":"alibaba/nacos","slug":"param-resourcepattern-is-illegal-resourcepatter","errorCode":null,"errorMessage":"Param 'resourcePattern' is illegal, resourcePattern is blank","messagePattern":"Param 'resourcePattern' is illegal, resourcePattern is blank","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"common/src/main/java/com/alibaba/nacos/common/utils/FuzzyGroupKeyPattern.java","lineNumber":54,"sourceCode":" * @author stone-98\n * @date 2024/3/14\n */\npublic class FuzzyGroupKeyPattern {\n    \n    /**\n     * Generates a fuzzy listen group key pattern based on the given dataId pattern, group, and optional tenant. pattern\n     * result as: fixNamespace>>groupPattern>>dataIdPattern\n     *\n     * @param resourcePattern The pattern for matching dataIds or service names.\n     * @param groupPattern    The groupPattern associated with the groups.\n     * @param fixNamespace    (Optional) The tenant associated with the dataIds (can be null or empty).\n     * @return A unique group key pattern for fuzzy listen.\n     * @throws IllegalArgumentException If the dataId pattern or group is blank.\n     */\n    public static String generatePattern(final String resourcePattern, final String groupPattern,\n        String fixNamespace) {\n        if (StringUtils.isBlank(resourcePattern)) {\n            throw new IllegalArgumentException(\n                \"Param 'resourcePattern' is illegal, resourcePattern is blank\");\n        }\n        if (StringUtils.isBlank(groupPattern)) {\n            throw new IllegalArgumentException(\"Param 'groupPattern' is illegal, group is blank\");\n        }\n        if (StringUtils.isBlank(fixNamespace)) {\n            fixNamespace = DEFAULT_NAMESPACE_ID;\n        }\n        StringBuilder sb = new StringBuilder();\n        sb.append(fixNamespace);\n        sb.append(FUZZY_WATCH_PATTERN_SPLITTER);\n        sb.append(groupPattern);\n        sb.append(FUZZY_WATCH_PATTERN_SPLITTER);\n        sb.append(resourcePattern);\n        return sb.toString().intern();\n    }\n    \n    /**","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/common/src/main/java/com/alibaba/nacos/common/utils/FuzzyGroupKeyPattern.java#L36-L72","documentation":"Thrown by FuzzyGroupKeyPattern.generatePattern when resourcePattern (the dataId/service-name pattern) is blank (null, empty, or whitespace only). This is the first validation in the method; groupPattern and fixNamespace are checked next. The result pattern is fixNamespace>>groupPattern>>resourcePattern, so a blank resourcePattern makes the key meaningless.","triggerScenarios":"Registering a fuzzy listen/watch with a blank dataId or service-name pattern. Entry point: fuzzy config listen or fuzzy service watch APIs that ultimately call generatePattern.","commonSituations":"UI or API caller submitting a fuzzy subscribe with an empty pattern field; a default that resolved to null; whitespace-only input not trimmed upstream.","solutions":["Validate the resourcePattern is non-blank at the API/UI boundary before calling fuzzy subscribe.","Require a wildcard pattern (e.g., 'prefix-*') — fuzzy listen expects a pattern, not an empty string.","Trim and reject blank input in the request form validator."],"exampleFix":"// before\nString key = FuzzyGroupKeyPattern.generatePattern(dataIdPattern, group, namespace);\n\n// after\nif (StringUtils.isBlank(dataIdPattern)) {\n    throw new IllegalArgumentException(\"dataIdPattern is required for fuzzy listen\");\n}\nString key = FuzzyGroupKeyPattern.generatePattern(dataIdPattern, group, namespace);","handlingStrategy":"validation","validationCode":"if (StringUtils.isBlank(resourcePattern)) {\n    throw new IllegalArgumentException(\"A non-blank resourcePattern is required for fuzzy listen\");\n}\nString key = FuzzyGroupKeyPattern.generatePattern(resourcePattern, groupPattern, fixNamespace);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate resourcePattern at the API/UI boundary before subscribing.","Require a wildcard pattern for fuzzy listen; never submit an empty dataId/service pattern."],"tags":["fuzzy-listen","validation","configuration","naming","blank-check"],"backgroundTag":null,"analyzedSha":"9b989acdf181d00898f2e8839257bb2b2a3cefe3","analyzedAt":"2026-08-14T07:17:31.569Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}