{"record":{"id":"4cc2944df4bd0914","repo":"oracle/graal","slug":"no-deserializer-registered-for-tag-tag","errorCode":null,"errorMessage":"No deserializer registered for tag ${tag}","messagePattern":"No deserializer registered for tag (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/replaycomp/JsonReplayCodec.java","lineNumber":1949,"sourceCode":"     */\n    public void dump(RecordedCompilationUnit compilationUnit, JsonWriter writer) throws IOException {\n        recursiveSerializer.serialize(compilationUnit, writer.valueBuilder(), RecordedCompilationUnitSerializer.TAG);\n    }\n\n    private RecursiveDeserializer createRecursiveDeserializer() {\n        return new RecursiveDeserializer() {\n            @Override\n            @SuppressWarnings(\"unchecked\")\n            public Object deserialize(Object json, CompilationProxies.ProxyFactory proxyFactory) throws DeserializationException {\n                if (json instanceof EconomicMap<?, ?>) {\n                    EconomicMap<String, Object> map = (EconomicMap<String, Object>) json;\n                    String tag = (String) map.get(\"tag\");\n                    if (tag == null) {\n                        throw new IllegalArgumentException(\"The replay map does not contain a tag: \" + map);\n                    }\n                    ObjectSerializer deserializer = tagSerializers.get(tag);\n                    if (deserializer == null) {\n                        throw new IllegalArgumentException(\"No deserializer registered for tag \" + tag);\n                    }\n                    return deserializer.deserialize(map, this, proxyFactory);\n                } else {\n                    return json;\n                }\n            }\n\n            @Override\n            @SuppressWarnings(\"unchecked\")\n            public Object deserialize(Object json, CompilationProxies.ProxyFactory proxyFactory, String tag) throws DeserializationException {\n                if (json instanceof EconomicMap<?, ?>) {\n                    EconomicMap<String, Object> map = (EconomicMap<String, Object>) json;\n                    ObjectSerializer deserializer = tagSerializers.get(tag);\n                    if (deserializer == null) {\n                        throw new IllegalArgumentException(\"No deserializer registered for tag \" + tag);\n                    }\n                    return deserializer.deserialize(map, this, proxyFactory);\n                } else {","sourceCodeStart":1931,"sourceCodeEnd":1967,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/replaycomp/JsonReplayCodec.java#L1931-L1967","documentation":"The untagged deserialization path (error 155's dispatch) reads the 'tag' from the map, then looks it up in tagSerializers. IllegalArgumentException('No deserializer registered for tag ...') means the tag exists in the file but this codec instance has no serializer registered under it.","triggerScenarios":"Replaying a file containing a tag string this codec version does not know — e.g. a newer format tag ('constantV2') read by an older build, or a tag from a fork's custom serializer.","commonSituations":"Version skew (replay file newer than the reading GraalVM); custom extensions recorded but not registered on the replay side; typo'd tags in edited files.","solutions":["Upgrade the replaying GraalVM to at least the version that wrote the file","Register a deserializer for the tag in tagSerializers before replay","Re-record the file with the same build that will replay it"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"Set<String> knownTags = codec.registeredTags();\nString tag = (String) map.get(\"tag\");\nif (!knownTags.contains(tag)) {\n    throw new IllegalArgumentException(\"Replay file uses unknown tag '\" + tag + \"'; was it written by a newer GraalVM?\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Replay files only on GraalVM builds equal to or newer than the one that wrote them","When introducing a new tag, bump a format version field in the file and refuse mismatches up front"],"tags":["graalvm","replay","deserialization","tag"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}