apache/cassandra · error · RuntimeException

java.lang.Throwable

Error message

java.lang.Throwable

What it means

The CompressionDictionaryCommandGroup's list operation calls probe.listCompressionDictionaries(keyspace, table) inside a supplier; any Throwable from the JMX lookup is wrapped in a RuntimeException. It means the node failed to enumerate compression dictionaries for the given table.

Source

Thrown at src/java/org/apache/cassandra/tools/nodetool/CompressionDictionaryCommandGroup.java:231

        @Parameters(index = "0", description = "The keyspace name", arity = "1")
        private String keyspace;

        @Parameters(index = "1", description = "The table name", arity = "1")
        private String table;

        @Override
        protected void execute(NodeProbe probe)
        {
            ListingHelper.list(probe,
                               () ->
                               {
                                   try
                                   {
                                       return probe.listCompressionDictionaries(keyspace, table);
                                   }
                                   catch (Throwable t)
                                   {
                                       throw new RuntimeException(t);
                                   }
                               },
                               List.of(CompressionDictionaryDetailsTabularData.TABULAR_DATA_TYPE_TABLE_ID_INDEX,
                                       CompressionDictionaryDetailsTabularData.TABULAR_DATA_TYPE_RAW_DICTIONARY_INDEX));
        }
    }

    @Command(name = "cleanup", description = "Clean up orphaned dictionaries by deleting them from " + SystemDistributedKeyspace.NAME
                                             + '.' + SystemDistributedKeyspace.COMPRESSION_DICTIONARIES +
                                             " table, these are ones for which a table they were trained for was dropped.")
    public static class CleanupDictionaries extends AbstractCommand
    {
        @Option(names = {"-d", "--dry"}, description = "Only display orphaned dictionaries, do not remove them.")
        private boolean dry;

        @Override
        protected void execute(NodeProbe probe)
        {

View on GitHub (pinned to 88fd0f6a0e)

Solutions

  1. Verify the keyspace/table names are correct and exist on the connected node.
  2. Confirm the Cassandra version on the target node supports compression dictionaries (matching your client).
  3. Check the wrapped cause (printed as 'Caused by') for the real failure.
  4. Use a node that hosts replicas of the table.

Example fix

// before
nodetool compressiondictionaries list ks tbl  # old node without dictionary support
// after
nodetool netstats -H | head  # or check version first:
nodetool version  # ensure >= version supporting compression dictionaries
Defensive patterns

Strategy: try-catch

Validate before calling

// confirm version support and table existence before listing dictionaries
String version = probe.getReleaseVersion();
if (!supportsCompressionDictionaryJmx(version))
    throw new UnsupportedOperationException("Target node " + version + " lacks dictionary JMX API");

Try / catch

try { List<?> dicts = probe.listCompressionDictionaries(ks, table); }
catch (RuntimeException e) {
    Throwable t = e.getCause();
    log("Dictionary listing failed: " + t);  // inspect real cause: instance-not-found, version, IO
}

Prevention

When it happens

Trigger: `nodetool compressiondictionaries list <keyspace> <table>` when the table doesn't exist on the node, the node runs a version without the dictionary JMX API, or the remote call throws (IO/instance-not-found).

Common situations: Querying a table with no compression dictionaries (or no zstd dictionary support); mixed-version cluster where some nodes lack the new MBean method; typo in keyspace/table.

Understand the failure class

Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.

Related errors


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