{"record":{"id":"e785c5d3e4877791","repo":"apache/cassandra","slug":"table-s-s-does-not-exist-or-does-not-support-dic","errorCode":null,"errorMessage":"Table %s.%s does not exist or does not support dictionary compression","messagePattern":"Table (.+?)\\.(.+?) does not exist or does not support dictionary compression","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/tools/NodeProbe.java","lineNumber":2845,"sourceCode":"    public TabularData listCompressionDictionaries(String keyspace, String table) throws IOException\n    {\n        return doWithCompressionDictionaryManagerMBean(CompressionDictionaryManagerMBean::listCompressionDictionaries, keyspace, table);\n    }\n\n    private <T> T doWithCompressionDictionaryManagerMBean(Function<CompressionDictionaryManagerMBean, T> func,\n                                                          String keyspace, String table) throws IOException\n    {\n        try\n        {\n            return func.apply(getDictionaryManagerProxy(keyspace, table));\n        }\n        catch (Exception e)\n        {\n            if (e.getCause() instanceof InstanceNotFoundException)\n            {\n                String message = String.format(\"Table %s.%s does not exist or does not support dictionary compression\",\n                                               keyspace, table);\n                throw new IllegalArgumentException(message);\n            }\n            else\n            {\n                throw new IOException(e.getMessage());\n            }\n        }\n    }\n\n    /**\n     * Gets the compression dictionary training state for the specified table.\n     * Returns an atomic snapshot of training status, progress, and failure details.\n     *\n     * @param keyspace the keyspace name\n     * @param table the table name\n     * @return the current training state\n     * @throws IOException if there's an error accessing the MBean\n     */\n    public TrainingState getCompressionDictionaryTrainingState(String keyspace, String table) throws IOException","sourceCodeStart":2827,"sourceCodeEnd":2863,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/tools/NodeProbe.java#L2827-L2863","documentation":"During compression-dictionary operations (import/export/list), NodeProbe resolves a per-table CompressionDictionaryManager MBean via JMX. If that lookup fails with InstanceNotFoundException (cause of the wrapped exception), it means the target table has no such MBean — either the table does not exist or it does not use dictionary-capable compression — and an IllegalArgumentException with this formatted message is thrown.","triggerScenarios":"Running `nodetool <dict-command> <keyspace> <table>` where keyspace/table is misspelled, the table was dropped, or the table's compression settings don't support dictionaries (e.g. zstd dictionary compression not configured).","commonSituations":"Typo in keyspace/table name; operation against a non-zstd or non-dictionary table; table created before dictionary compression was enabled; case-sensitivity mistakes in keyspace/table names.","solutions":["Verify the table exists: run `nodetool tablestats` or cqlsh DESCRIBE TABLE keyspace.table.","Confirm the table uses a dictionary-capable compression algorithm (zstd with dictionary support enabled).","Check keyspace/table name casing and spelling (both are case-sensitive if quoted).","Recreate/alter the table with dictionary compression support if needed."],"exampleFix":"// before\nnodetool importcompressiondict ks users   // table has no dictionary MBean\n// after\nALTER TABLE ks.users WITH compression = {'class': 'org.apache.cassandra.io.compress.ZstdDictionaryCompressor'};","handlingStrategy":"validation","validationCode":"// confirm the table exists and supports dictionary compression before invoking\nTableMetadata tm = Schema.instance.getTableMetadata(keyspace, table);\nif (tm == null) throw new IllegalArgumentException(\"Table \" + keyspace + \".\" + table + \" does not exist\");\nif (!(tm.params.compression.klass.getSimpleName().startsWith(\"ZstdDictionary\")))\n    throw new IllegalArgumentException(\"Table does not use dictionary-capable compression\");","typeGuard":null,"tryCatchPattern":"try { probe.importCompressionDictionary(ks, tbl, file); }\ncatch (IllegalArgumentException e) { log.warn(\"Table not dictionary-capable: {}\", e.getMessage()); }","preventionTips":["Verify table existence with cqlsh/DESCRIBE before dictionary operations","Check the compression class of the table (must be dictionary-capable)","Watch name casing — identifiers are case-sensitive when quoted"],"tags":["jmx","nodetool","table-not-found","compression-dictionary"],"backgroundTag":"resource-not-found","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"}