{"record":{"id":"19eaf270e2f12746","repo":"apache/cassandra","slug":"unsupported-record-type-field-type-supporte-19eaf2","errorCode":null,"errorMessage":"Unsupported record type field [${type}] - supported record types are [${SINGLE_QUERY}, ${BATCH}]","messagePattern":"Unsupported record type field \\[(.+?)\\] - supported record types are \\[(.+?), (.+?)\\]","errorType":"exception","errorClass":"IORuntimeException","httpStatus":null,"severity":"error","filePath":"tools/fqltool/src/org/apache/cassandra/fqltool/commands/Dump.java","lineNumber":92,"sourceCode":"\n    public static void dump(List<String> arguments, String rollCycle, boolean follow)\n    {\n        StringBuilder sb = new StringBuilder();\n        ReadMarshallable reader = wireIn ->\n        {\n            sb.setLength(0);\n\n            int version = wireIn.read(BinLog.VERSION).int16();\n            if (version > FullQueryLogger.CURRENT_VERSION)\n            {\n                throw new IORuntimeException(\"Unsupported record version [\" + version\n                                             + \"] - highest supported version is [\" + FullQueryLogger.CURRENT_VERSION + ']');\n            }\n\n            String type = wireIn.read(BinLog.TYPE).text();\n            if (!FullQueryLogger.SINGLE_QUERY.equals((type)) && !FullQueryLogger.BATCH.equals((type)))\n            {\n                throw new IORuntimeException(\"Unsupported record type field [\" + type\n                                             + \"] - supported record types are [\" + FullQueryLogger.SINGLE_QUERY + \", \" + FullQueryLogger.BATCH + ']');\n            }\n\n            sb.append(\"Type: \")\n              .append(type)\n              .append(System.lineSeparator());\n\n            long queryStartTime = wireIn.read(FullQueryLogger.QUERY_START_TIME).int64();\n            sb.append(\"Query start time: \")\n              .append(queryStartTime)\n              .append(System.lineSeparator());\n\n            int protocolVersion = wireIn.read(FullQueryLogger.PROTOCOL_VERSION).int32();\n            sb.append(\"Protocol version: \")\n              .append(protocolVersion)\n              .append(System.lineSeparator());\n\n            QueryOptions options =","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/tools/fqltool/src/org/apache/cassandra/fqltool/commands/Dump.java#L74-L110","documentation":"Dump.dump reads the record's TYPE field and requires it to equal FullQueryLogger.SINGLE_QUERY or FullQueryLogger.BATCH; any other value triggers this IORuntimeException. It is the string-level type validation that precedes switch-based dispatch of the record.","triggerScenarios":"A record in the dumped log has a TYPE string other than 'single_query' or 'batch' — corrupted wire data or a non-FQL Chronicle file.","commonSituations":"Feeding unrelated Chronicle Queue files to fqltool dump; bit rot in stored logs; files from other Cassandra components.","solutions":["Verify the input is a full-query-log file/directory","Re-capture or restore the log from a clean source","Upgrade the tool if the log was written by a newer Cassandra with new record types"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { dump(file); } catch (IORuntimeException e) { if (e.getMessage().startsWith(\"Unsupported record type field\")) { log.warn(\"file is not a full query log: \" + file); } else throw e; }","preventionTips":["Only point dump at directories produced by FullQueryLogger","Validate logs with a known-good reader after capture","Watch for new record types in Cassandra release notes"],"tags":["serialization","validation","deserialization"],"backgroundTag":"invalid-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"}