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
- Either omit 'param' (single execution) or set it exactly to 'loop' for repeated execution.
- Remove unrelated columns from the INSERT.
- 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
- For TRY_EXECUTE_LISTENING, either omit 'param' or use exactly 'loop'.
- Never pass generic boolean strings like 'true'/'false' as param.
- Keep op-specific param validation in one helper used by all writers.
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
- COMMAND_STORE_OPS + " is a write-only table"
- metadata + " only supports single partition key queries"
- Must specify 'op'
- NODE_OPS + " is a write-only table"
- TXN_OPS + " is a write-only table"
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)