{"record":{"id":"032b5cf9888326d3","repo":"apache/cassandra","slug":"unsupported-record-version-s-highest-supporte","errorCode":null,"errorMessage":"Unsupported record version [%s] - highest supported version is [%s]","messagePattern":"Unsupported record version \\[(.+?)\\] - highest supported version is \\[(.+?)\\]","errorType":"exception","errorClass":"org.apache.cassandra.io.util.IORuntimeException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/tools/AuditLogViewer.java","lineNumber":155,"sourceCode":"              .append(wireIn.read(BinAuditLogger.AUDITLOG_MESSAGE).text())\n              .append(System.lineSeparator());\n\n            displayFun.accept(sb.toString());\n        }\n\n        private boolean isSupportedVersion(int version)\n        {\n            if (version <= BinAuditLogger.CURRENT_VERSION)\n            {\n                return true;\n            }\n\n            if (ignoreUnsupported)\n            {\n                return false;\n            }\n\n            throw new IORuntimeException(\"Unsupported record version [\" + version\n                                         + \"] - highest supported version is [\" + BinAuditLogger.CURRENT_VERSION + ']');\n        }\n\n        private boolean isSupportedType(String type)\n        {\n            if (BinAuditLogger.AUDITLOG_TYPE.equals(type))\n            {\n                return true;\n            }\n\n            if (ignoreUnsupported)\n            {\n                return false;\n            }\n\n            throw new IORuntimeException(\"Unsupported record type field [\" + type\n                                         + \"] - supported type is [\" + BinAuditLogger.AUDITLOG_TYPE + ']');\n        }","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/tools/AuditLogViewer.java#L137-L173","documentation":"Thrown by AuditLogViewer's chronicle reader when a binary audit log record carries a version newer than BinAuditLogger.CURRENT_VERSION (or otherwise unsupported). The viewer cannot safely deserialize records written by newer or incompatible writers; unless ignoreUnsupported is set, it fails loudly instead of skipping.","triggerScenarios":"Running AuditLogViewer over a bin audit log whose record version field exceeds the viewer's supported BinAuditLogger.CURRENT_VERSION; reading logs produced by a newer Cassandra build.","commonSituations":"Inspecting audit logs generated by an upgraded cluster with an older offline tool; pointing the viewer at a different log format version.","solutions":["Upgrade the AuditLogViewer / Cassandra binaries so CURRENT_VERSION >= the record version","Re-run the viewer with the ignore-unsupported option to skip records it cannot parse","Confirm you are reading the intended audit log files, not ones from a newer installation"],"exampleFix":"// before\nviewer.read(log, /* ignoreUnsupported */ false);\n// after\nviewer.read(log, /* ignoreUnsupported */ true); // or upgrade the viewer binary","handlingStrategy":"fallback","validationCode":"// peek the record version before full parse\nint version = readRecordVersion(file);\nif (version > BinAuditLogger.CURRENT_VERSION) { /* upgrade viewer or skip */ }","typeGuard":null,"tryCatchPattern":"try { viewer.read(log, ignoreUnsupported); } catch (IORuntimeException e) { if (e.getMessage().startsWith(\"Unsupported record version\")) { /* handle with newer tooling or skip file */ } else throw e; }","preventionTips":["Keep audit log tooling at the same version as the cluster writing the logs","Enable ignore-unsupported when reading logs across version upgrades","Archive logs by version so older viewers only see compatible records"],"tags":["audit-log","serialization-version","forward-compatibility"],"backgroundTag":"unsupported-enum-value","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"}