{"record":{"id":"2295aba4e15bc7be","repo":"apache/cassandra","slug":"the-creation-date-not-specified","errorCode":null,"errorMessage":"The creation date not specified.","messagePattern":"The creation date not specified\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/db/compression/CompressionDictionaryDetailsTabularData.java","lineNumber":316,"sourceCode":"                throw new IllegalArgumentException(\"Provided kind is null.\");\n\n            CompressionDictionary.Kind dictionaryKind;\n\n            try\n            {\n                dictionaryKind = CompressionDictionary.Kind.valueOf(kind);\n            }\n            catch (IllegalArgumentException ex)\n            {\n                throw new IllegalArgumentException(\"There is no such dictionary kind like '\" + kind + \"'. Available kinds: \" + Arrays.asList(CompressionDictionary.Kind.values()));\n            }\n\n            if (dictLength <= 0)\n                throw new IllegalArgumentException(\"Size has to be strictly positive number, it is '\" + dictLength + \"'.\");\n            if (dict.length != dictLength)\n                throw new IllegalArgumentException(\"The length of the provided dictionary array (\" + dict.length + \") is not equal to provided length value (\" + dictLength + \").\");\n            if (createdAt == null)\n                throw new IllegalArgumentException(\"The creation date not specified.\");\n\n            int checksumOfDictionaryToImport = CompressionDictionary.calculateChecksum((byte) dictionaryKind.ordinal(), dictId, dict);\n            if (checksumOfDictionaryToImport != dictChecksum)\n            {\n                throw new IllegalArgumentException(format(\"Computed checksum of dictionary to import (%s) is different from checksum specified on input (%s).\",\n                                                          checksumOfDictionaryToImport,\n                                                          dictChecksum));\n            }\n        }\n    }\n}\n","sourceCodeStart":298,"sourceCodeEnd":328,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/compression/CompressionDictionaryDetailsTabularData.java#L298-L328","documentation":"Every imported dictionary must carry a creation timestamp; validate() rejects a null createdAt. The date is stored with the dictionary and surfaced in JMX/descriptor output, so it is a mandatory field of the TabularData representation.","triggerScenarios":"Building a CompressionDictionaryDataObject with createdAt == null — e.g. the descriptor was constructed without parsing the creation date, or the source data lacked the CREATED_AT item.","commonSituations":"Import tooling that never fills the timestamp; date-parsing failures upstream that were swallowed and left null; JMX round-trips dropping the field.","solutions":["Set createdAt to the dictionary's creation date before validation (e.g. Instant.now() for a newly imported dictionary, or the stored value for an existing one)","Fix the date parsing so failures surface instead of yielding null","Verify the CompositeData input includes CREATED_AT"],"exampleFix":"// before\nDate createdAt = null; // never parsed\n// after\nDate createdAt = Date.from(Instant.now());","handlingStrategy":"validation","validationCode":"if (obj.createdAt == null) throw new IllegalArgumentException(\"createdAt must be set before creating CompressionDictionaryDataObject\");","typeGuard":"boolean hasCreatedAt(CompressionDictionaryDataObject o) { return o.createdAt != null; }","tryCatchPattern":"try { tabularData.fromDataObject(obj); } catch (IllegalArgumentException e) { if (e.getMessage().contains(\"creation date not specified\")) { /* set createdAt (stored value or Instant.now()) and rebuild */ } else throw e; }","preventionTips":["Set createdAt in the same helper that builds the descriptor","Make date parsing fail loudly so it cannot silently produce null","For new imports use the current time; for re-imports carry the original stored date"],"tags":["validation","compression-dictionary"],"backgroundTag":"missing-required-argument","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"}