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

  1. Inspect the wrapped cause (stack trace) and the target node's log for the real failure
  2. Verify JMX connectivity (port, credentials)
  3. Ensure no conflicting streaming operation is running (`nodetool netstats`)
  4. 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

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


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