apache/cassandra · error · IllegalStateException
Unsupported operation
Error message
Unsupported operation: %s
What it means
RuntimeException from Decommission.execute when the wrapped failure is an UnsupportedOperationException from the server — e.g. decommission is not supported for this node's state or configuration (such as force decommission on a node where it is disallowed, or operation unsupported in the current mode).
Solutions
- Check the chained message for which operation is unsupported
- Ensure the node is eligible for decommission (not the last node in a datacenter unless intended)
- Use the appropriate nodetool flag or remove the node via a different procedure
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/java/org/apache/cassandra/tools/nodetool/Decommission.java:55 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/7652edf7a533abf4.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/tools/nodetool/Decommission.java:55
try
{
if (probe.getStorageService().isDecommissioning())
{
probe.output().out.println("This node is still decommissioning.");
return;
}
if ("DECOMMISSIONED".equals(probe.getStorageService().getBootstrapState()))
{
probe.output().out.println("Node was already decommissioned.");
return;
}
probe.decommission(force);
} catch (InterruptedException e)
{
throw new RuntimeException("Error decommissioning node", e);
} catch (UnsupportedOperationException e)
{
throw new IllegalStateException("Unsupported operation: " + e.getMessage(), e);
}
}
@Command(name = "abortdecommission", description = "Abort an ongoing, failed decommission")
public static class Abort extends AbstractCommand
{
@Option(paramLabel = "nodeId", names = { "--node" })
private String nodeId;
@Override
protected void execute(NodeProbe probe)
{
probe.abortDecommission(nodeId);
}
}
}
View on GitHub (pinned to 88fd0f6a0e)