alibaba/nacos · warning · IllegalArgumentException
Param 'groupPattern' is illegal, group is blank
Error message
Param 'groupPattern' is illegal, group is blank
What it means
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.
Source
Thrown at common/src/main/java/com/alibaba/nacos/common/utils/FuzzyGroupKeyPattern.java:58
/**
* Generates a fuzzy listen group key pattern based on the given dataId pattern, group, and optional tenant. pattern
* result as: fixNamespace>>groupPattern>>dataIdPattern
*
* @param resourcePattern The pattern for matching dataIds or service names.
* @param groupPattern The groupPattern associated with the groups.
* @param fixNamespace (Optional) The tenant associated with the dataIds (can be null or empty).
* @return A unique group key pattern for fuzzy listen.
* @throws IllegalArgumentException If the dataId pattern or group is blank.
*/
public static String generatePattern(final String resourcePattern, final String groupPattern,
String fixNamespace) {
if (StringUtils.isBlank(resourcePattern)) {
throw new IllegalArgumentException(
"Param 'resourcePattern' is illegal, resourcePattern is blank");
}
if (StringUtils.isBlank(groupPattern)) {
throw new IllegalArgumentException("Param 'groupPattern' is illegal, group is blank");
}
if (StringUtils.isBlank(fixNamespace)) {
fixNamespace = DEFAULT_NAMESPACE_ID;
}
StringBuilder sb = new StringBuilder();
sb.append(fixNamespace);
sb.append(FUZZY_WATCH_PATTERN_SPLITTER);
sb.append(groupPattern);
sb.append(FUZZY_WATCH_PATTERN_SPLITTER);
sb.append(resourcePattern);
return sb.toString().intern();
}
/**
* Given a dataId, group, and a collection of completed group key patterns, returns the patterns that match.
*
* @param resourceName The dataId or service name to match.
* @param group The group to match.View on GitHub (pinned to 9b989acdf1)
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.
Example fix
// before String key = FuzzyGroupKeyPattern.generatePattern(dataIdPattern, group, namespace); // after String resolvedGroup = StringUtils.isBlank(group) ? Constants.DEFAULT_GROUP : group; String key = FuzzyGroupKeyPattern.generatePattern(dataIdPattern, resolvedGroup, namespace);
Defensive patterns
Strategy: validation
Validate before calling
String resolvedGroup = StringUtils.isBlank(groupPattern) ? Constants.DEFAULT_GROUP : groupPattern; String key = FuzzyGroupKeyPattern.generatePattern(resourcePattern, resolvedGroup, fixNamespace);
Prevention
- Default to Constants.DEFAULT_GROUP when the caller intends the default, instead of passing blank.
- Validate group at the request boundary.
When it happens
Trigger: Registering a fuzzy listen/watch with a blank group. The caller supplied a valid resourcePattern but omitted or blanked the group.
Common situations: Caller assumes a default group and passes null/empty; UI omits the group field; the group constant was misconfigured.
Related errors
- Param 'resourcePattern' is illegal, resourcePattern is blank
- distroThreshold can not be zero or negative: {threshold}
- illegal format, must be 'type:version', but got: {value}
- illegal version, must match: {UtilsAndCommons.VERSION_STRING
- 10000
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/14dd38da339b28b1.
Report an issue: GitHub.