apache/cassandra · error · RuntimeException
Error during moving node
Error message
Error during moving node
What it means
Wraps any IOException from the StorageService JMX move/resumeMove call into a RuntimeException with the message 'Error during moving node'. The nodetool client did its job; the failure came from the node performing the move operation over JMX.
Source
Thrown at src/java/org/apache/cassandra/tools/nodetool/Move.java:57
@Override
public void execute(NodeProbe probe)
{
try
{
if (!newToken.isEmpty())
{
probe.move(newToken);
}
else
{
if (resume)
probe.resumeMove();
else
throw new IllegalArgumentException("Need to give either a token for a new move operation, or --resume/--abort for an existing one");
}
} catch (IOException e)
{
throw new RuntimeException("Error during moving node", e);
}
}
@Command(name = "abortmove", description = "Abort a failed move operation for this or a remote node")
public static class Abort extends AbstractCommand
{
@Option(paramLabel = "nodeId", names = { "--node" })
private String nodeId;
@Override
public void execute(NodeProbe probe)
{
probe.abortMove(nodeId);
}
}
}
View on GitHub (pinned to 88fd0f6a0e)
Solutions
- Inspect the wrapped cause (stack trace) and the target node's log for the real failure
- Verify JMX connectivity (port, credentials)
- Ensure no conflicting streaming operation is running (`nodetool netstats`)
- Retry the move/resume once the node is stable
Example fix
// before nodetool move 123 --host wrong-jmx-host // after nodetool move 123 --host correct-jmx-host --port 7199
Defensive patterns
Strategy: try-catch
Validate before calling
nc -z "$HOST" 7199 && echo "JMX port reachable"
Try / catch
try { probe.move(newToken); } catch (RuntimeException e) { Throwable cause = e.getCause(); if (cause instanceof IOException) { /* JMX/IO issue: log host and retry or alert */ } throw e; } Prevention
- Verify JMX connectivity before node operations
- Avoid overlapping topology operations (move/bootstrap/decommission)
- Monitor node logs during moves
When it happens
Trigger: `nodetool move <token>` or `nodetool move --resume` when the remote JMX call fails: node unreachable, IO problems during the move request, connection dropped mid-call.
Common situations: Moving a node while another operation (bootstrap/decommission) is in flight; JMX port/firewall misconfiguration; node going down during a move.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- Error while rebuilding node: ${e.getCause().getMessage()}
- Error while refreshing system.size_estimates
- Unknown Cache metric name
- Unknown BufferPool metric name
- Error setting log for on level . Please check logback confi
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/f7e954f359a4190a.
Report an issue: GitHub.