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

  1. Verify the location prefix actually contains the backup manifests (aws s3 ls s3://bucket/prefix/).
  2. Fix credentials/IAM so the Alpha can list and read objects (s3:GetObject, s3:ListBucket, or GCS storage.objects.get/list).
  3. Confirm network reachability from Alphas to the object store (region, proxy, VPC endpoints).
  4. 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

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


AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01). Data as JSON: /api/errors/bdb950b3101a8871. Report an issue: GitHub.