{"record":{"id":"14dd38da339b28b1","repo":"alibaba/nacos","slug":"param-grouppattern-is-illegal-group-is-blank","errorCode":null,"errorMessage":"Param 'groupPattern' is illegal, group is blank","messagePattern":"Param 'groupPattern' is illegal, group is blank","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"common/src/main/java/com/alibaba/nacos/common/utils/FuzzyGroupKeyPattern.java","lineNumber":58,"sourceCode":"    \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    /**\n     * Given a dataId, group, and a collection of completed group key patterns, returns the patterns that match.\n     *\n     * @param resourceName     The dataId or service name to match.\n     * @param group            The group to match.","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/alibaba/nacos/blob/9b989acdf181d00898f2e8839257bb2b2a3cefe3/common/src/main/java/com/alibaba/nacos/common/utils/FuzzyGroupKeyPattern.java#L40-L76","documentation":"Thrown by FuzzyGroupKeyPattern.generatePattern when groupPattern is blank. This is the second guard, after resourcePattern is validated. The group is a mandatory component of the group-key pattern even in fuzzy mode.","triggerScenarios":"Registering a fuzzy listen/watch with a blank group. The caller supplied a valid resourcePattern but omitted or blanked the group.","commonSituations":"Caller assumes a default group and passes null/empty; UI omits the group field; the group constant was misconfigured.","solutions":["Default the group to Constants.DEFAULT_GROUP when the caller intends the default group, rather than passing blank.","Validate group is non-blank at the request boundary.","Trim and reject blank group input in the form validator."],"exampleFix":"// before\nString key = FuzzyGroupKeyPattern.generatePattern(dataIdPattern, group, namespace);\n\n// after\nString resolvedGroup = StringUtils.isBlank(group) ? Constants.DEFAULT_GROUP : group;\nString key = FuzzyGroupKeyPattern.generatePattern(dataIdPattern, resolvedGroup, namespace);","handlingStrategy":"validation","validationCode":"String resolvedGroup = StringUtils.isBlank(groupPattern) ? Constants.DEFAULT_GROUP : groupPattern;\nString key = FuzzyGroupKeyPattern.generatePattern(resourcePattern, resolvedGroup, fixNamespace);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default to Constants.DEFAULT_GROUP when the caller intends the default, instead of passing blank.","Validate group at the request boundary."],"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"}