{"record":{"id":"5aca7b95d4c90e91","repo":"pinpoint-apm/pinpoint","slug":"error-parsing-yml","errorCode":null,"errorMessage":"Error parsing yml : ","messagePattern":"Error parsing yml : ","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/plugins-loader/src/main/java/com/navercorp/pinpoint/loader/plugins/trace/yaml/TraceMetadataProviderYamlParser.java","lineNumber":73,"sourceCode":"                List<AnnotationKey> annotationKeys = toAnnotationKeys(parsedTraceMetadata.getAnnotationKeys());\n                return new ParsedTraceMetadataProvider(typeProviderId, serviceTypeInfos, annotationKeys);\n            } catch (Exception e) {\n                throw new IllegalStateException(\"Invalid type provider definition : \" + url.toString(), e);\n            }\n        } catch (IOException e) {\n            throw new IllegalStateException(\"IOException parsing \" + url.toExternalForm(), e);\n        }\n    }\n\n    private ParsedTraceMetadata parse0(URL metaUrl) throws IOException {\n        try (InputStream inputStream = metaUrl.openStream()) {\n            ParsedTraceMetadata parsedTraceMetadata = mapper.readValue(inputStream, ParsedTraceMetadata.class);\n            if (parsedTraceMetadata == null) {\n                logger.warn(\"Empty type provider definition. Skipping : {}\", metaUrl.toExternalForm());\n            }\n            return parsedTraceMetadata;\n        } catch (JsonParseException | JsonMappingException e) {\n            throw new IllegalStateException(\"Error parsing yml : \" + metaUrl, e);\n        } catch (IOException e) {\n            throw new IllegalStateException(\"Error opening stream : \" + metaUrl, e);\n        }\n    }\n\n    private String getTypeProviderId(URL metaUrl) {\n        try {\n            URLConnection urlConnection = metaUrl.openConnection();\n            if (urlConnection instanceof JarURLConnection) {\n                JarURLConnection jarUrlConnection = (JarURLConnection) urlConnection;\n                String jarFileName = new File(jarUrlConnection.getJarFile().getName()).getName();\n                String entryFileName = new File(jarUrlConnection.getEntryName()).getName();\n                return jarFileName + \":\" + entryFileName;\n            }\n        } catch (IOException e) {\n            logger.warn(\"Error opening : \" + metaUrl, e);\n            return metaUrl.toExternalForm();\n        }","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/plugins-loader/src/main/java/com/navercorp/pinpoint/loader/plugins/trace/yaml/TraceMetadataProviderYamlParser.java#L55-L91","documentation":"parse0(URL) deserializes the type-provider YAML with Jackson. If Jackson raises JsonParseException or JsonMappingException — the document is not valid YAML/JSON or does not map to ParsedTraceMetadata — it is wrapped in an IllegalStateException('Error parsing yml : ' + metaUrl).","triggerScenarios":"The resource at metaUrl contains malformed YAML (bad indentation, tabs, stray characters) or valid YAML whose structure doesn't match ParsedTraceMetadata (wrong types for fields).","commonSituations":"Hand-edited yml with tab indentation; duplicated keys; a field typed as int receiving a string; editor auto-formatting changing the structure.","solutions":["Validate the YAML with a linter/parser (e.g. yamllint or python -c 'import yaml; yaml.safe_load(open(...))')","Replace tabs with spaces and fix indentation","Check field types in the yml against the ParsedTraceMetadata class","Read the wrapped Jackson exception for the exact line/problem"],"exampleFix":"// before (tab indentation — invalid YAML)\nserviceTypes:\n\t- code: 1000\n// after (spaces)\nserviceTypes:\n  - code: 1000\n    name: \"MY_SERVICE\"","handlingStrategy":"try-catch","validationCode":"new org.yaml.snakeyaml.Yaml().load(new FileInputStream(path)); // fail fast on malformed YAML before handing to the plugin parser","typeGuard":null,"tryCatchPattern":"try {\n    parser.parse(url);\n} catch (IllegalStateException e) {\n    if (e.getCause() instanceof JsonParseException || e.getCause() instanceof JsonMappingException) {\n        // fix YAML syntax/structure at the location Jackson reports\n    }\n}","preventionTips":["Run yamllint on provider files","Use spaces, never tabs, for YAML indentation","Validate field types against ParsedTraceMetadata in tests"],"tags":["yaml","jackson","parse-error","plugin"],"backgroundTag":"yaml-parse-error","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}