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

  1. Default the group to Constants.DEFAULT_GROUP when the caller intends the default group, rather than passing blank.
  2. Validate group is non-blank at the request boundary.
  3. 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

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


AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14). Data as JSON: /api/errors/14dd38da339b28b1. Report an issue: GitHub.