{"record":{"id":"f7e954f359a4190a","repo":"apache/cassandra","slug":"error-during-moving-node","errorCode":null,"errorMessage":"Error during moving node","messagePattern":"Error during moving node","errorType":"console","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/tools/nodetool/Move.java","lineNumber":57,"sourceCode":"    @Override\n    public void execute(NodeProbe probe)\n    {\n        try\n        {\n            if (!newToken.isEmpty())\n            {\n                probe.move(newToken);\n            }\n            else\n            {\n                if (resume)\n                    probe.resumeMove();\n                else\n                    throw new IllegalArgumentException(\"Need to give either a token for a new move operation, or --resume/--abort for an existing one\");\n            }\n        } catch (IOException e)\n        {\n            throw new RuntimeException(\"Error during moving node\", e);\n        }\n    }\n\n    @Command(name = \"abortmove\", description = \"Abort a failed move operation for this or a remote node\")\n    public static class Abort extends AbstractCommand\n    {\n        @Option(paramLabel = \"nodeId\", names = { \"--node\" })\n        private String nodeId;\n\n        @Override\n        public void execute(NodeProbe probe)\n        {\n            probe.abortMove(nodeId);\n        }\n    }\n}\n","sourceCodeStart":39,"sourceCodeEnd":74,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/tools/nodetool/Move.java#L39-L74","documentation":"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.","triggerScenarios":"`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.","commonSituations":"Moving a node while another operation (bootstrap/decommission) is in flight; JMX port/firewall misconfiguration; node going down during a move.","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"],"exampleFix":"// before\nnodetool move 123 --host wrong-jmx-host\n// after\nnodetool move 123 --host correct-jmx-host --port 7199","handlingStrategy":"try-catch","validationCode":"nc -z \"$HOST\" 7199 && echo \"JMX port reachable\"","typeGuard":null,"tryCatchPattern":"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; }","preventionTips":["Verify JMX connectivity before node operations","Avoid overlapping topology operations (move/bootstrap/decommission)","Monitor node logs during moves"],"tags":["nodetool","jmx","ioexception","streaming"],"backgroundTag":"http-request-failed","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}