{"record":{"id":"7001c1bae3289279","repo":"hasura/graphql-engine","slug":"reading-server-metadata-w","errorCode":null,"errorMessage":"reading server metadata: %w","messagePattern":"reading server metadata: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/commands/metadata_handlers.go","lineNumber":435,"sourceCode":"\treturn nil\n}\n\nfunc diff(o *MetadataDiffOptions, diffType DiffType) error {\n\tvar op errors.Op = \"commands.diff\"\n\tif len(o.Args) > 0 {\n\t\treturn errors.E(op, fmt.Errorf(\"expected 0 arguments, found: %v\", o.Args))\n\t}\n\n\tserverMetadata, err := cli.GetCommonMetadataOps(o.EC).ExportMetadata()\n\tif err != nil {\n\t\treturn errors.E(op, fmt.Errorf(\"exporting metadata from server: %w\", err))\n\t}\n\n\tvar serverMetadataBytes []byte\n\n\tserverMetadataBytes, err = io.ReadAll(serverMetadata)\n\tif err != nil {\n\t\treturn errors.E(op, fmt.Errorf(\"reading server metadata: %w\", err))\n\t}\n\n\tif diffType == DifftypeYAML {\n\t\tserverMetadataBytes, err = metadatautil.JSONToYAML(serverMetadataBytes)\n\t\tif err != nil {\n\t\t\treturn errors.E(op, fmt.Errorf(\"parsing server metadata as yaml: %w\", err))\n\t\t}\n\t}\n\n\tlocalMetadataBytes, err := os.ReadFile(o.EC.MetadataFile)\n\tif err != nil {\n\t\treturn errors.E(op, fmt.Errorf(\"reading local metadata: %w\", err))\n\t}\n\n\tif err := printMyersDiff(\n\t\tstring(serverMetadataBytes),\n\t\tstring(localMetadataBytes),\n\t\t\"server\",","sourceCodeStart":417,"sourceCodeEnd":453,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/cli/commands/metadata_handlers.go#L417-L453","documentation":"During `metadata diff` in YAML mode, the server's JSON metadata is read and then converted to YAML with metadatautil.JSONToYAML before comparison. This error means that read succeeded but the conversion failed — the server response was not the expected valid JSON document.","triggerScenarios":"`metadata diff` with YAML diff type where the server metadata bytes fail JSONToYAML: malformed/truncated server response, HTML error page returned with a 200, or unexpected JSON shapes.","commonSituations":"Server or intermediate proxy returning an error body that is not valid JSON; version mismatch where the server emits a metadata shape the CLI cannot convert; corrupted metadata state on the server.","solutions":["Run `metadata export -o json` to inspect the raw server metadata and confirm it is valid JSON","Compare CLI and server versions; upgrade the CLI if the server is newer","If server metadata is corrupted, use `metadata inconsistency list` / `metadata reload` to repair server state","Retry to rule out transient truncation (proxy timeout on large payloads)"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// validate server metadata is JSON before YAML diff\nvar v any\nif err := json.Unmarshal(serverMetadataBytes, &v); err != nil {\n  // fall back to JSON diff type\n}","typeGuard":null,"tryCatchPattern":"if err := diff(o, DifftypeYAML); err != nil {\n  if strings.Contains(err.Error(), \"parsing server metadata as yaml\") {\n    return diff(o, DifftypeJSON) // fallback\n  }\n}","preventionTips":["Prefer JSON diff when CLI/server versions differ","Inspect raw exports with `metadata export -o json` when conversions fail","Upgrade CLI to match server metadata API version"],"tags":["metadata","diff","yaml","json-conversion","cli"],"backgroundTag":"json-yaml-conversion-failed","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}