apache/cassandra · error · org.apache.cassandra.io.util.IORuntimeException
Unsupported record type field
Error message
Unsupported record type field [%s] - supported type is [%s]
What it means
Thrown by AuditLogViewer when a binary audit log record's type field is not the expected BinAuditLogger.AUDITLOG_TYPE. The file contains records the viewer does not recognize as audit entries; unless ignoreUnsupported is set, it throws instead of skipping the record.
Solutions
- Point the viewer at the correct binary audit log directory (audit bin log files, not other chronicle data)
- Enable ignore-unsupported to skip non-audit records
- Use matching Cassandra versions for writer and viewer
Example fix
// before viewer.read(wrongQueueFile, false); // records of type 'other' // after viewer.read(auditBinLogFile, true); // correct file, skip unsupported types
Defensive patterns
Strategy: fallback
Validate before calling
// verify the file is a bin audit log before viewing
String type = peekRecordType(file);
if (!BinAuditLogger.AUDITLOG_TYPE.equals(type)) { /* wrong file */ } Try / catch
try { viewer.read(file, ignoreUnsupported); } catch (IORuntimeException e) { if (e.getMessage().startsWith("Unsupported record type")) { /* point at the correct audit log dir or skip */ } else throw e; } Prevention
- Point AuditLogViewer only at the configured audit log bin directory
- Enable ignore-unsupported for mixed or hand-edited chronicle files
- Watch for truncated/corrupt audit log files and re-export them
When it happens
Trigger: readMarshallable() calls isSupportedType(type) with a type string other than "auditlog" — e.g. corrupted records, a differently formatted chronicle file, or a writer emitting new record types.
Common situations: Pointing AuditLogViewer at a non-audit chronicle queue file; reading partially corrupted/truncated audit logs; logs written by a newer version with extra record types.
Related errors
- Can't enable audit log archiving via nodetool unless…
- Decompression failed
- Not enough bytes to deserialize collection
- Not enough bytes to read a + name
- Not enough bytes to read %dth
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/391a6cce2b171d29.
Report an issue: GitHub.
Appendix: source
Thrown at src/java/org/apache/cassandra/tools/AuditLogViewer.java:171
}
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 + ']');
}
}
private static class AuditLogViewerOptions
{
private final List<String> pathList;
private String rollCycle = "FAST_HOURLY";
private boolean follow;
private boolean ignoreUnsupported;
private AuditLogViewerOptions(String[] pathList)
{
this.pathList = Arrays.asList(pathList);
}
static AuditLogViewerOptions parseArgs(String cmdArgs[])
{View on GitHub (pinned to 88fd0f6a0e)