{"record":{"id":"a845c056c2f11a76","repo":"apache/cassandra","slug":"got-o-a-c-db-marshal-frozentype-for-something-else","errorCode":null,"errorMessage":"Got o.a.c.db.marshal.FrozenType for something else than a collection, this driver version might be too old for your version of Cassandra","messagePattern":"Got o\\.a\\.c\\.db\\.marshal\\.FrozenType for something else than a collection, this driver version might be too old for your version of Cassandra","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/java/org/apache/cassandra/cql3/functions/types/DataTypeClassNameParser.java","lineNumber":121,"sourceCode":"        if (next.startsWith(LIST_TYPE))\n            return DataType.list(\n            parseOne(parser.getTypeParameters().get(0), protocolVersion, codecRegistry), frozen);\n\n        if (next.startsWith(SET_TYPE))\n            return DataType.set(\n            parseOne(parser.getTypeParameters().get(0), protocolVersion, codecRegistry), frozen);\n\n        if (next.startsWith(MAP_TYPE))\n        {\n            List<String> params = parser.getTypeParameters();\n            return DataType.map(\n            parseOne(params.get(0), protocolVersion, codecRegistry),\n            parseOne(params.get(1), protocolVersion, codecRegistry),\n            frozen);\n        }\n\n        if (frozen)\n            logger.warn(\n            \"Got o.a.c.db.marshal.FrozenType for something else than a collection, \"\n            + \"this driver version might be too old for your version of Cassandra\");\n\n        if (isVectorType(next))\n        {\n            List<String> parameters = parser.getTypeParameters();\n            DataType subtype = parseOne(parameters.get(0), protocolVersion, codecRegistry);\n            int dimensions = Integer.parseInt(parameters.get(1));\n            return DataType.vector(subtype, dimensions);\n        }\n\n        if (isUserType(next))\n        {\n            ++parser.idx; // skipping '('\n\n            String keyspace = parser.readOne();\n            parser.skipBlankAndComma();\n            String typeName =","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/cql3/functions/types/DataTypeClassNameParser.java#L103-L139","documentation":"DataTypeClassNameParser warns that it encountered o.a.c.db.marshal.FrozenType wrapping something other than a collection while parsing a type class name. FrozenType is only meaningful for frozen collections (and UDTs); encountering it elsewhere signals the connected Java driver is too old to understand newer Cassandra types, and the frozen flag is effectively dropped/ignored for that type.","triggerScenarios":"parseOne() parsing a class-name string like org.apache.cassandra.db.marshal.FrozenType(...) whose inner type is not a list/map/set (and not a UDT), reached while decoding system-table metadata or column types with an old protocol/driver.","commonSituations":"Old java-driver versions connecting to newer Cassandra clusters; deserializing type strings for frozen UDTs or new types (e.g. vector) the old parser path mishandles; reading metadata tables manually.","solutions":["Upgrade the Java driver to a version matching your Cassandra release (driver 3.x+ for C* 3.x/4.x)","If the type string comes from your own code, verify it only wraps collections/UDTs in FrozenType","Work around by parsing the inner type directly if the metadata is known-good"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// Pin driver version compatible with the server\nconst MIN_DRIVER = '3.11.0';\nif (semver.lt(driverVersion, MIN_DRIVER)) throw new Error('driver too old for frozen/vector types');","typeGuard":null,"tryCatchPattern":"try {\n  cluster.getMetadata().getKeyspace(ks);\n} catch (RuntimeException e) {\n  if (String.valueOf(e).contains(\"FrozenType\")) {\n    logger.warn(\"driver metadata parse issue; upgrading driver\");\n  } else throw e;\n}","preventionTips":["Keep the java-driver version aligned with the Cassandra server version","Test schema metadata loading after any cluster upgrade","Avoid manually constructing FrozenType-wrapped type strings for non-collections"],"tags":["driver-compatibility","frozen-type","metadata-parsing"],"backgroundTag":"incompatible-source-type","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"}