{"record":{"id":"8eeeb7e71fc7b69d","repo":"apache/cassandra","slug":"unsupported-record-type-field-type-supporte","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/FQLQueryReader.java","lineNumber":136,"sourceCode":"    }\n\n    private void verifyVersion(WireIn wireIn)\n    {\n        int version = wireIn.read(VERSION).int16();\n\n        if (version > CURRENT_VERSION)\n        {\n            throw new IORuntimeException(\"Unsupported record version [\" + version\n                                         + \"] - highest supported version is [\" + CURRENT_VERSION + ']');\n        }\n    }\n\n    private String readType(WireIn wireIn) throws IORuntimeException\n    {\n        String type = wireIn.read(TYPE).text();\n        if (!SINGLE_QUERY.equals(type) && !BATCH.equals(type))\n        {\n            throw new IORuntimeException(\"Unsupported record type field [\" + type\n                                         + \"] - supported record types are [\" + SINGLE_QUERY + \", \" + BATCH + ']');\n        }\n\n        return type;\n    }\n\n    public FQLQuery getQuery()\n    {\n        return query;\n    }\n}\n","sourceCodeStart":118,"sourceCodeEnd":148,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/tools/fqltool/src/org/apache/cassandra/fqltool/FQLQueryReader.java#L118-L148","documentation":"FQLQueryReader.readType reads the string-valued TYPE field from the wire record and only accepts FullQueryLogger.SINGLE_QUERY or FullQueryLogger.BATCH; anything else is rejected with this IORuntimeException. It ensures the replayer only processes record kinds it knows how to deserialize.","triggerScenarios":"Deserializing a record whose TYPE string is not exactly 'single_query' or 'batch' — corrupted file, a foreign log, or a manually edited wire file.","commonSituations":"Pointing fqltool at an arbitrary Chronicle queue file that is not a full query log; byte-level corruption of the log; parsing files from other tooling using similar wire formats.","solutions":["Confirm the file is a full-query-log produced by FullQueryLogger","Re-capture the log; discard corrupted files","Upgrade the tool if the log was written by a newer Cassandra with new record types"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (!\"single_query\".equals(type) && !\"batch\".equals(type)) skipOrReject(type);","typeGuard":null,"tryCatchPattern":"try { dump(file); } catch (IORuntimeException e) { if (e.getMessage().startsWith(\"Unsupported record type field\")) { log.warn(\"skipping non-FQL file\"); } else throw e; }","preventionTips":["Confirm input files originate from FullQueryLogger","Do not hand-edit Chronicle wire files","Keep writer and reader versions aligned"],"tags":["serialization","deserialization","validation"],"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"}