{"record":{"id":"5965100c0a2d705b","repo":"dgraph-io/dgraph","slug":"while-parsing-predicate-got-q","errorCode":null,"errorMessage":"while parsing predicate got: %q","messagePattern":"while parsing predicate got: %q","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"worker/backup_manifest.go","lineNumber":189,"sourceCode":"\t\t\tm.Groups[gid] = parsedPreds\n\t\t}\n\t\tfor _, op := range m.DropOperations {\n\t\t\tswitch op.DropOp {\n\t\t\tcase pb.DropOperation_DATA:\n\t\t\t\top.DropValue = fmt.Sprintf(\"%#x\", x.RootNamespace)\n\t\t\tcase pb.DropOperation_ATTR:\n\t\t\t\top.DropValue = x.AttrInRootNamespace(op.DropValue)\n\t\t\tdefault:\n\t\t\t\t// do nothing for drop all and drop namespace.\n\t\t\t}\n\t\t}\n\tcase 2103:\n\t\tfor gid, preds := range m.Groups {\n\t\t\tparsedPreds := preds[:0]\n\t\t\tfor _, pred := range preds {\n\t\t\t\tns_attr, err := x.AttrFrom2103(pred)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errors.Errorf(\"while parsing predicate got: %q\", err)\n\t\t\t\t}\n\t\t\t\tparsedPreds = append(parsedPreds, ns_attr)\n\t\t\t}\n\t\t\tm.Groups[gid] = parsedPreds\n\t\t}\n\t\tfor _, op := range m.DropOperations {\n\t\t\t// We have a cluster wide drop data in v21.03.\n\t\t\tif op.DropOp == pb.DropOperation_ATTR {\n\t\t\t\tns_attr, err := x.AttrFrom2103(op.DropValue)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errors.Errorf(\"while parsing the drop operation %+v got: %q\",\n\t\t\t\t\t\top, err)\n\t\t\t\t}\n\t\t\t\top.DropValue = ns_attr\n\t\t\t}\n\t\t}\n\tcase 2105:\n\t\t// pass","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/dgraph-io/dgraph/blob/759e242be62c91f8d084da06ad0c8d21256d9c07/worker/backup_manifest.go#L171-L207","documentation":"upgradeManifest migrates a manifest written by an older Dgraph version (case 2103, i.e. v21.03) to the current schema. ACL predicate strings in m.Groups must be converted via x.AttrFrom2103; this error is thrown when a predicate stored in the 21.03 format cannot be parsed/converted.","triggerScenarios":"GetManifest loads a manifest whose version field is 2103 and a group's ACL predicate string cannot be converted by AttrFrom2103 — e.g. manifest written by an even older version, hand-edited predicate, or corrupt ACL data in the manifest.","commonSituations":"Upgrading a cluster across several versions (e.g. v20.x -> v23.x) skipping intermediate supported upgrade paths; manually edited manifests; ACL rules created under an incompatible format.","solutions":["Inspect the manifest's Groups predicates and fix or remove malformed entries.","Upgrade through intermediate Dgraph versions so manifests are converted stepwise.","Take a fresh backup with the new version instead of reusing the old manifest.","Restore ACL data and re-export a backup with the current version."],"exampleFix":"// before: hand-edited predicate in manifest\n\"Groups\": {\"1\": [\"dgraph.x.unknown\"]}\n// after: use predicates created by the 21.03 format or regenerate via backup\ndgraph backup --dst s3://bucket/new-backup","handlingStrategy":"validation","validationCode":"if m.Version == 2103 {\n    for gid, preds := range m.Groups {\n        for _, p := range preds {\n            if _, err := x.AttrFrom2103(p); err != nil {\n                return fmt.Errorf(\"group %s has unparsable predicate %q: %v\", gid, p, err)\n            }\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Upgrade through intermediate supported versions stepwise","Never hand-edit manifest files","Regenerate backups with the target version before restoring"],"tags":["backup","manifest","upgrade","migration","acl"],"backgroundTag":"manifest-version-upgrade-failed","analyzedSha":"759e242be62c91f8d084da06ad0c8d21256d9c07","analyzedAt":"2026-09-01T14:42:12.034Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}