apache/cassandra · error · RuntimeException

java.io.IOException

Error message

java.io.IOException

What it means

During `nodetool cms dump` (or similar CMSAdmin dump command), writing or resolving the dump file location threw an IOException. The tool wraps it in a RuntimeException so the nodetool client fails with the IO cause attached.

Source

Thrown at src/java/org/apache/cassandra/tools/nodetool/CMSAdmin.java:344

        {
            try
            {
                if (dumpOptions == null)
                {
                    String fileLocation = probe.getCMSOperationsProxy().dumpClusterMetadata();
                    printCMSDumpLocation(probe, fileLocation);
                }
                else
                {
                    String fileLocation = probe.getCMSOperationsProxy().dumpClusterMetadata(dumpOptions.epoch,
                                                                                            dumpOptions.transformEpoch,
                                                                                            dumpOptions.version.name());
                    printCMSDumpLocation(probe, fileLocation);
                }
            }
            catch (IOException e)
            {
                throw new RuntimeException(e);
            }
        }

        private void printCMSDumpLocation(NodeProbe probe, String fileLocation)
        {
            probe.output().out.println("Cluster Metadata dump available at " + fileLocation);
        }
    }
}

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Check that the dump target directory exists and is writable by the Cassandra user (ls -ld, chown if needed)
  2. Free disk space if the filesystem is full
  3. Re-run the dump with a path on a writable local filesystem, then inspect the wrapped IOException cause in the output

Example fix

// before
nodetool cms dump --output /proc/foo
// after
nodetool cms dump --output /var/lib/cassandra/data/cmmdump
Defensive patterns

Strategy: try-catch

Validate before calling

File dir = new File(outputPath);
if (!dir.getParentFile().canWrite()) throw new IllegalStateException("not writable: " + dir);

Try / catch

try { dump(); }
catch (RuntimeException e) {
    if (e.getCause() instanceof IOException io) {
        System.err.println("Dump IO failure: " + io.getMessage());
    }
}

Prevention

When it happens

Trigger: The dump target path is not writable (permissions, read-only filesystem, nonexistent directory) or an IO error occurs while the server writes the cluster metadata dump file.

Common situations: Dumping to a directory the Cassandra process cannot write to, full disk, or passing a --output location on a node whose filesystem is read-only.

Understand the failure class

Background: "failed to write file", "Could not save figure", "Error saving remote file" — file write failed: causes and fixes across languages and libraries — this error's family across 38 libraries.

Related errors


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