dgraph-io/dgraph · error
cannot get backup manifests
Error message
cannot get backup manifests
What it means
Wrapped by handleRestoreProposal (worker/online_restore.go:250) when getManifestsToRestore fails. This walks the backup location through the URI handler and reads the manifest files (manifest.json per backup) that describe each full/incremental backup; failure means the manifests could not be listed, downloaded, or decoded.
Source
Thrown at worker/online_restore.go:250
// Reset tablets and set correct tablets to match the restored backup.
creds := &x.MinioCredentials{
AccessKey: req.AccessKey,
SecretKey: req.SecretKey,
SessionToken: req.SessionToken,
Anonymous: req.Anonymous,
}
uri, err := url.Parse(req.Location)
if err != nil {
return errors.Wrapf(err, "cannot parse backup location")
}
handler, err := NewUriHandler(uri, creds)
if err != nil {
return errors.Wrapf(err, "cannot create backup handler")
}
manifests, err := getManifestsToRestore(handler, uri, req)
if err != nil {
return errors.Wrapf(err, "cannot get backup manifests")
}
// filter manifests that needs to be restored
mfsToRestore := manifests[:0]
for _, m := range manifests {
if (req.BackupNum == 0 || m.BackupNum <= req.BackupNum) &&
(req.IncrementalFrom == 0 || m.BackupNum >= req.IncrementalFrom) {
mfsToRestore = append(mfsToRestore, m)
}
}
manifests = mfsToRestore
if len(manifests) == 0 {
return errors.Errorf("no backup manifests found at location %s", req.Location)
}
lastManifest := manifests[0]View on GitHub (pinned to 759e242be6)
Solutions
- Verify the location prefix actually contains the backup manifests (aws s3 ls s3://bucket/prefix/).
- Fix credentials/IAM so the Alpha can list and read objects (s3:GetObject, s3:ListBucket, or GCS storage.objects.get/list).
- Confirm network reachability from Alphas to the object store (region, proxy, VPC endpoints).
- Check the wrapped error in Alpha logs; if manifests are corrupted, re-run dgraph backup.
Example fix
# before
{"location": "s3://my-bucket/wrong-prefix"}
# after (verify manifests exist first)
aws s3 ls s3://my-bucket/backups/ # shows manifest.json entries
{"location": "s3://my-bucket/backups"} Defensive patterns
Strategy: validation
Validate before calling
// Verify manifests are listable and readable before restore
out, _ := exec.Command("aws", "s3", "ls", "s3://bucket/backups/").Output()
if !strings.Contains(string(out), "manifest") {
return errors.New("no manifests visible at backup location")
} Prevention
- Grant Alphas object-store read permissions (s3:GetObject, s3:ListBucket / GCS equivalents).
- Point the location at the backup-set root, not a subfolder.
- Confirm network/region reachability from Alphas to the object store.
- Keep backup and restore Dgraph versions compatible.
When it happens
Trigger: Bucket/object not accessible with the given credentials (403/404 from S3/GCS); backup folder path wrong so no manifest at that prefix; corrupted or truncated manifest.json; network failure reaching the object store.
Common situations: Typo in bucket or folder prefix; S3 bucket in a different region or VPC endpoint not reachable from Alpha; IAM policy lacking s3:GetObject/s3:ListBucket; backups produced by an incompatible Dgraph version with a changed manifest format.
Related errors
- cannot create backup handler
- RunRestore failed to write group id file
- cannot retrieve manifests
- map phase failed to parse namespace
- Map phase failed to parse namespace
AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01).
Data as JSON: /api/errors/bdb950b3101a8871.
Report an issue: GitHub.