apache/cassandra · error · IllegalArgumentException

Invalid queue identifier

Error message

Invalid queue identifier ${split[0]} in ${describe}: ${input}

What it means

After parsing 'queue:limit', AccordExecutor applies the enum lookup function (GlobalGroup::valueOf or ExclusiveGroup::valueOf) and the Long.parseLong; any failure (unknown queue name, bad number) is caught and rethrown as IllegalArgumentException 'Invalid queue identifier ...' because queue and limit parsing share one try block. It effectively reports unparseable input as an unknown/bad queue identifier.

Solutions

  1. Use exactly the enum constant names defined in GlobalGroup/ExclusiveGroup for the relevant group position.
  2. Ensure the limit part is a valid decimal number (also satisfies error 1973's range).
  3. Check the enum constants in your Cassandra version (org.apache.cassandra.service.accord.global/ExclusiveGroup) rather than copying names from docs of another version.

Example fix

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

Strategy: validation

Validate before calling

for (String name : input.split("[;,:]")) { /* check against known enum constants */ if (!KNOWN_QUEUES.contains(name.trim())) throw new IllegalArgumentException("unknown queue: " + name); }

Try / catch

try { parse(input); } catch (IllegalArgumentException e) { LOG.error("Check queue names against GlobalGroup/ExclusiveGroup enums: {}", e.getMessage()); }

Prevention

When it happens

Trigger: Using a queue name not present in the GlobalGroup/ExclusiveGroup enum (e.g. 'work:8') or a non-numeric limit ('load:many') in the queue_active_limits property.

Common situations: Typos in queue enum names; referencing a queue from the wrong group; version drift where enum constants were renamed between Cassandra releases.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


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

Appendix: source

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

        {
            if (spec.trim().isEmpty()) continue;

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

            try
            {
                Enum<?> queue = get.apply(split[0]);
                long value = Long.parseLong(split[1]);
                if (value <= 0 || value >= 128)
                    throw new IllegalArgumentException("Invalid limit " + value + " in queue_active_limits: " + input);

                result |= value << (queue.ordinal() * 8);
            }
            catch (Throwable t)
            {
                throw new IllegalArgumentException("Invalid queue identifier " + split[0] + " in " + describe + ": " + input);
            }
        }

        return result;
    }
}

View on GitHub (pinned to 88fd0f6a0e)