{"record":{"id":"0d2143eccc29d816","repo":"apache/cassandra","slug":"received-dictionary-update-for-unknown-table-with","errorCode":null,"errorMessage":"Received dictionary update for unknown table with tableId {}","messagePattern":"Received dictionary update for unknown table with tableId (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/db/compression/CompressionDictionaryUpdateVerbHandler.java","lineNumber":46,"sourceCode":"\npublic class CompressionDictionaryUpdateVerbHandler implements IVerbHandler<CompressionDictionaryUpdateMessage>\n{\n    private static final Logger logger = LoggerFactory.getLogger(CompressionDictionaryUpdateVerbHandler.class);\n    public static final CompressionDictionaryUpdateVerbHandler instance = new CompressionDictionaryUpdateVerbHandler();\n\n    private CompressionDictionaryUpdateVerbHandler() {}\n\n    @Override\n    public void doVerb(Message<CompressionDictionaryUpdateMessage> message)\n    {\n        CompressionDictionaryUpdateMessage payload = message.payload;\n\n        try\n        {\n            ColumnFamilyStore cfs = Schema.instance.getColumnFamilyStoreInstance(payload.tableId);\n            if (cfs == null)\n            {\n                logger.warn(\"Received dictionary update for unknown table with tableId {}\", payload.tableId);\n                return;\n            }\n\n            logger.debug(\"Received dictionary update notification for {}.{} with dictionaryId {}\",\n                         cfs.keyspace, cfs.name, payload.dictionaryId);\n            CompressionDictionaryManager manager = cfs.compressionDictionaryManager();\n            manager.onNewDictionaryAvailable(payload.dictionaryId);\n        }\n        catch (Exception e)\n        {\n            logger.error(\"Failed to process dictionary update notification for tableId {}\",\n                         payload.tableId, e);\n        }\n    }\n}\n","sourceCodeStart":28,"sourceCodeEnd":62,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/compression/CompressionDictionaryUpdateVerbHandler.java#L28-L62","documentation":"This is a WARN log emitted by CompressionDictionaryUpdateVerbHandler.doVerb when an internode message carrying a Zstd compression dictionary update arrives for a tableId that no longer exists in the local schema. The handler looks up the ColumnFamilyStore via Schema.instance.getColumnFamilyStoreInstance; a null result means the table was dropped (or never created on this node), so the update is safely ignored.","triggerScenarios":"A dictionary-trained notification for table T is in flight or queued while T is dropped on the receiving node; schema propagation races let a node receive a dictionary update verb before/after the table's schema is locally known; a message is delivered to a node that has not yet applied CREATE TABLE for that tableId.","commonSituations":"Operators dropping tables with sstable compression dictionaries enabled (zstd dictionary training) while clusters are busy; rolling upgrades or multi-DC deployments where schema versions drift briefly; replicas in another datacenter receiving updates out of order during topology changes.","solutions":["Verify the tableId references a still-existing table (SELECT id, keyspace_name, table_name FROM system_schema.tables); if the table was intentionally dropped, this warning is benign and can be ignored.","If the table should exist, check nodetool describecluster / schema agreement for schema divergence and re-run DDL if one node is missing the table.","Confirm all nodes are on a version supporting compression dictionaries and schema sync is healthy (no pending schema ops in system.local).","If warnings persist for a live table, collect logs and report — it indicates a schema propagation race or message replay bug."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// before relying on a dictionary update target\nColumnFamilyStore cfs = Schema.instance.getColumnFamilyStoreInstance(tableId);\nif (cfs == null) {\n    logger.warn(\"Skipping dictionary update for unknown tableId {}\", tableId);\n    return;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Coordinate table drops with dictionary training activity so in-flight updates don't target dropped tables.","Monitor schema agreement across nodes before running dictionary training.","Treat this warning as benign during normal drops; alert only on persistence for live tables."],"tags":["cassandra","internode-messaging","compression","schema"],"backgroundTag":"entity-not-found","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}