apache/cassandra · error · RuntimeException
Error decommissioning node
Error message
Error decommissioning node
What it means
RuntimeException wrapper from Decommission.execute when probe.decommission() throws InterruptedException while waiting for the decommission operation. The node's decommission was initiated but the nodetool client's wait was interrupted; the operation on the server may still be in progress.
Solutions
- Re-run nodetool status / netstats to check whether decommission continues on the node
- Avoid interrupting nodetool during long decommissions
- Restore the interrupt status in calling code if embedding NodeProbe
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/java/org/apache/cassandra/tools/nodetool/Decommission.java:52 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/95df9bce699274bd.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/tools/nodetool/Decommission.java:52
@Override
public void execute(NodeProbe probe)
{
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)