apache/cassandra · error · IllegalArgumentException

Invalid specifiers in

Error message

Invalid specifiers in ${describe}; expect [GlobalGroup];[ExclusiveGroup] but got: ${input}

What it means

AccordExecutor.parseEnumParams parses JVM-test/diagnostic flags of the form 'GlobalGroup-spec;ExclusiveGroup-spec' separated by exactly one semicolon. When the input does not contain exactly two semicolon-separated specifiers, it throws IllegalArgumentException describing the expected format. It is a strict input-format guard for internal tuning parameters like queue_active_limits.

Solutions

  1. Provide exactly two semicolon-separated parts: '<GlobalGroup-spec>;<ExclusiveGroup-spec>'.
  2. Quote the value in your shell so semicolons are not interpreted: -Dcassandra.acord.queue_active_limits='load:8;local:4'.
  3. Check each part parses as valid enum values (see error 1974 for per-part errors).

Example fix

// before
-Dcassandra.acord.queue_active_limits=load:8
// after
-Dcassandra.acord.queue_active_limits=load:8;load:4
Defensive patterns

Strategy: validation

Validate before calling

String v = System.getProperty("cassandra.acord.queue_active_limits");
if (v != null && v.split(";").length != 2) throw new IllegalArgumentException("expect <GlobalGroup>;<ExclusiveGroup>, got: " + v);

Try / catch

try { parseFlags(v); } catch (IllegalArgumentException e) { LOG.error("Bad queue_active_limits '{}': {}", v, e.getMessage()); throw e; }

Prevention

When it happens

Trigger: Passing a system property/argument such as -Dcassandra.acord.queue_active_limits with zero or more than one semicolons, e.g. 'flush:8' or 'a:1;b:2;c:3', to AccordExecutor configuration parsing.

Common situations: Typos when copying tuning flags; shell quoting stripping the semicolon (semicolons often need quoting in bash); adding an extra group specifier by mistake.

Understand the failure class

Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.

Related errors


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/6a0982ddcf56bb66. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/service/accord/execution/AccordExecutor.java:813

                    {
                        for (int j = 0 ; j < q0.size() ; ++j)
                            snapshot.add(new TaskInfo(ifQueued, q.commandStoreId, q0.getSingle(j)));
                    }
                }
            }
            else
            {
                int commmandStoreId = t instanceof SafeTask ? ((SafeTask<?>) t).commandStore.id() : -1;
                snapshot.add(new TaskInfo(ifCurrent, commmandStoreId, t));
            }
        }
    }

    private static long[] parseEnumParams(String input, String describe)
    {
        String[] specs = input.split(";");
        if (specs.length != 2)
            throw new IllegalArgumentException("Invalid specifiers in " + describe + "; expect [GlobalGroup];[ExclusiveGroup] but got: " + input);
        long[] result = new long[2];
        result[0] = parseEnumParams(GlobalGroup::valueOf, specs[0], describe + " for GlobalGroup");
        result[1] = parseEnumParams(ExclusiveGroup::valueOf, specs[1], describe + " for ExclusiveGroup");
        return result;
    }

    private static long parseEnumParams(Function<String, ? extends Enum<?>> get, String input, String describe)
    {
        long result = 0;
        for (String spec : input.split(","))
        {
            if (spec.trim().isEmpty()) continue;

            String[] split = spec.split(":");
            if (split.length != 2)
                throw new IllegalArgumentException("Invalid specifier " + spec + " in " + describe + ": " + input);

            try

View on GitHub (pinned to 88fd0f6a0e)