apache/cassandra · error · IORuntimeException
Log entry of unsupported type
Error message
Log entry of unsupported type ${type} What it means
In Dump.dump, after the type string is validated, it is dispatched in a switch to dumpSingleQuery or dumpBatch. The default branch throws this IORuntimeException — a defensive backstop for any type that slipped past earlier checks or was introduced later. It should be unreachable for well-formed current-version logs.
Solutions
- Ensure the Dump tool and the log-writing Cassandra come from matching versions
- Re-capture the log with the current version
- If developing, keep validation and switch cases in sync with FullQueryLogger constants
Defensive patterns
Strategy: try-catch
Try / catch
try { dump(file); } catch (IORuntimeException e) { if (e.getMessage().startsWith("Log entry of unsupported type")) { exitWith("tool/log version mismatch; upgrade fqltool"); } else throw e; } Prevention
- Match tool version to the cluster that wrote the logs
- Keep record-type constants shared between writer and reader
- Add tests covering both record types when changing the format
When it happens
Trigger: The switch encounters a type string matching neither SINGLE_QUERY nor BATCH — only possible if the type constant values changed between versions or the earlier validation was bypassed.
Common situations: Constant-value drift between Cassandra versions; logs from a newer release with an added record type.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- Corrupted input: expected byte 1, 2, 3, 4, 5 or 6; received
- Corrupted input: expected byte 1, 2, 3, 4 or 5; received
- Expected instance of
- Invalid 16-bits integer value, expecting 2 bytes but got
- Invalid 32-bits float value, expecting 4 bytes but got
AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10).
Data as JSON: /api/errors/21f16c88a281b5c5.
Report an issue: GitHub.
Appendix: source
Thrown at tools/fqltool/src/org/apache/cassandra/fqltool/commands/Dump.java:135
.append(System.lineSeparator());
long generatedNowInSeconds = wireIn.read(FullQueryLogger.GENERATED_NOW_IN_SECONDS).int64();
sb.append("Generated nowInSeconds:")
.append(generatedNowInSeconds)
.append(System.lineSeparator());
switch (type)
{
case (FullQueryLogger.SINGLE_QUERY):
dumpQuery(options, wireIn, sb);
break;
case (FullQueryLogger.BATCH):
dumpBatch(wireIn, sb);
break;
default:
throw new IORuntimeException("Log entry of unsupported type " + type);
}
System.out.print(sb.toString());
System.out.flush();
};
//Backoff strategy for spinning on the queue, not aggressive at all as this doesn't need to be low latency
Pauser pauser = Pauser.millis(100);
List<ChronicleQueue> queues = arguments.stream().distinct().map(path -> SingleChronicleQueueBuilder.single(new File(path)).readOnly(true).rollCycle(RollCycles.valueOf(rollCycle)).build()).collect(Collectors.toList());
List<ExcerptTailer> tailers = queues.stream().map(ChronicleQueue::createTailer).collect(Collectors.toList());
boolean hadWork = true;
while (hadWork)
{
hadWork = false;
for (ExcerptTailer tailer : tailers)
{
while (tailer.readDocument(reader))
{View on GitHub (pinned to 88fd0f6a0e)