apache/cassandra · error · org.apache.cassandra.io.util.IORuntimeException
Unsupported record version
Error message
Unsupported record version [%s] - highest supported version is [%s]
What it means
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.
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
Example fix
// before viewer.read(log, /* ignoreUnsupported */ false); // after viewer.read(log, /* ignoreUnsupported */ true); // or upgrade the viewer binary
Defensive patterns
Strategy: fallback
Validate before calling
// peek the record version before full parse
int version = readRecordVersion(file);
if (version > BinAuditLogger.CURRENT_VERSION) { /* upgrade viewer or skip */ } Try / catch
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; } Prevention
- 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
When it happens
Trigger: 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.
Common situations: Inspecting audit logs generated by an upgraded cluster with an older offline tool; pointing the viewer at a different log format version.
Related errors
- Can't enable audit log archiving via nodetool unless…
- Current version is older than the target serialization…
- Unsupported record type field
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/032b5cf9888326d3.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/tools/AuditLogViewer.java:155
.append(wireIn.read(BinAuditLogger.AUDITLOG_MESSAGE).text())
.append(System.lineSeparator());
displayFun.accept(sb.toString());
}
private boolean isSupportedVersion(int version)
{
if (version <= BinAuditLogger.CURRENT_VERSION)
{
return true;
}
if (ignoreUnsupported)
{
return false;
}
throw new IORuntimeException("Unsupported record version [" + version
+ "] - highest supported version is [" + BinAuditLogger.CURRENT_VERSION + ']');
}
private boolean isSupportedType(String type)
{
if (BinAuditLogger.AUDITLOG_TYPE.equals(type))
{
return true;
}
if (ignoreUnsupported)
{
return false;
}
throw new IORuntimeException("Unsupported record type field [" + type
+ "] - supported type is [" + BinAuditLogger.AUDITLOG_TYPE + ']');
}View on GitHub (pinned to 88fd0f6a0e)