apache/cassandra · error · InvalidRequestException

Unknown param for " + CommandStoreOp.TRY_EXECUTE_LISTENING…

Error message

Unknown param for " + CommandStoreOp.TRY_EXECUTE_LISTENING + ": '" + param + "'; expect only 'loop' or missing"

What it means

For the TRY_EXECUTE_LISTENING CommandStoreOp, the optional 'param' may only be the string 'loop' (case-insensitive) or absent. Any other value triggers InvalidRequestException describing the only accepted values.

Solutions

  1. Either omit 'param' (single execution) or set it exactly to 'loop' for repeated execution.
  2. Remove unrelated columns from the INSERT.
  3. Use a different op if a different parameterized behavior is needed.

Example fix

// before
INSERT INTO system_views.accord_command_store_ops (command_store_id, op, param) VALUES (0, 'TRY_EXECUTE_LISTENING', 'true');
// after
INSERT INTO system_views.accord_command_store_ops (command_store_id, op, param) VALUES (0, 'TRY_EXECUTE_LISTENING', 'loop');
Defensive patterns

Strategy: validation

Validate before calling

if (op.equals("TRY_EXECUTE_LISTENING") && param != null && !param.equalsIgnoreCase("loop"))
    throw new IllegalArgumentException("TRY_EXECUTE_LISTENING accepts only param 'loop' or no param, got '" + param + "'");

Try / catch

try {
    session.execute(insert);
} catch (InvalidRequestException e) {
    if (e.getMessage().contains("expect only 'loop' or missing")) {
        // drop the param or set it to 'loop' and retry
    }
}

Prevention

When it happens

Trigger: INSERTing op = 'TRY_EXECUTE_LISTENING' with param set to anything other than 'loop', e.g. 'true', 'once', or a store id.

Common situations: Confusing boolean-style params ('true'/'false') with the literal flag 'loop'; copying 'param' from a different op's insert.

Understand the failure class

Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.

Related errors


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

Appendix: source

Thrown at src/java/org/apache/cassandra/db/virtual/AccordDebugKeyspace.java:2071

                {
                    if (param == null)
                        throw new IllegalArgumentException("Must specify 'param' for " + op);
                    ModeFlag mode = tryParse(param, true, ModeFlag.class, ModeFlag::valueOf);
                    boolean set = op == CommandStoreOp.SET_PROGRESS_LOG_MODE;
                    function = commandStore -> {
                        DefaultProgressLog progressLog = ((DefaultProgressLog)commandStore.unsafeProgressLog());
                        if (set) progressLog.setMode(mode);
                        else progressLog.unsetMode(mode);
                        return AsyncResults.success(null);
                    };
                    break;
                }
                case TRY_EXECUTE_LISTENING:
                {
                    boolean loop;
                    if (param == null) loop = false;
                    else if (param.equalsIgnoreCase("loop")) loop = true;
                    else throw new InvalidRequestException("Unknown param for " + CommandStoreOp.TRY_EXECUTE_LISTENING + ": '" + param + "'; expect only 'loop' or missing");

                    function = commandStore -> commandStore.tryToExecuteListeningTxns(loop);
                    break;
                }
                case REPLAY:
                {
                    ReplayMode replayMode = tryParse(param, true, ReplayMode.class, ReplayMode::valueOf);
                    function = commandStore -> {
                        accord.journal().replay(commandStore, replayMode, 0L);
                        return AsyncResults.success(null);
                    };
                    break;
                }
                case REBOOTSTRAP:
                    allFunction = () -> node.commandStores().rebootstrap(node);
                    function = commandStore -> commandStore.rebootstrap(node);
                    break;
                case HARD_CATCHUP:

View on GitHub (pinned to 88fd0f6a0e)