dgraph-io/dgraph · error
no backup manifests found at location %s
Error message
no backup manifests found at location %s
What it means
Returned by handleRestoreProposal (worker/online_restore.go:265). Manifests were fetched but after filtering to [IncrementalFrom, BackupNum] the list is empty, so there is nothing to restore at req.Location. It means the backup set at that location does not intersect the requested backup number range.
Source
Thrown at worker/online_restore.go:265
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]
restorePreds, ok := lastManifest.Groups[req.GroupId]
if !ok {
return errors.Errorf("backup manifest does not contain information for group ID %d", req.GroupId)
}
// When we change predicate names from {fromNamespace}-predicate to 0-predicate,
// this is not straight forward. This is because, Zero has a knowledge of what
// predicate belongs to what group. We need to ensure that while transforming predicate names,
// we let the Zero know. The algorithm that we follow here is that,
// the group that had the data at the time of backup, has the data after restore.
// For example, if we restore namespace 1 and 1-email belongs to group 1, after restore,
// 0-email would belong to group 1 as well.
// There are two types of predicates in a namespace:
View on GitHub (pinned to 759e242be6)
Solutions
- List the manifests at the location and set backupNum/incrementalFrom to values present there (or omit them to restore everything).
- Ensure the location includes the full backup plus all incrementals to restore; always restore from the backup-set root folder.
- If the desired backup range is missing, re-run dgraph backup to regenerate a complete set before restoring.
Example fix
// before
{"location": "s3://bucket/backups", "backupNum": 9, "incrementalFrom": 7} // only backups 1-3 exist
// after
{"location": "s3://bucket/backups"} // restore all, or use existing numbers
{"location": "s3://bucket/backups", "backupNum": 3} Defensive patterns
Strategy: validation
Validate before calling
// Check that requested backup numbers exist in the backup set
// (list manifests first; restore with numbers <= highest available)
if requestedBackupNum > highestManifestBackupNum {
return errors.New("backupNum not present in backup set")
} Prevention
- Always copy the full backup set (full + incrementals) to the restore location.
- Omit backupNum/incrementalFrom to restore everything unless you know the range exists.
- Never restore incrementals alone into a fresh cluster.
- Read manifest.json files to confirm available backup numbers before choosing a range.
When it happens
Trigger: Restore request with backupNum/incrementalFrom values that don't match any backup at the location (e.g. BackupNum=5 but only 3 backups exist); restoring incremental backups without their full backup in the same location; pointing at a folder containing only data files, no manifests.
Common situations: Pointing restore at a partial copy of the backup folder where the full backup manifest was excluded; incrementalFrom/backupNum mistyped; restoring only incremental backups into a fresh cluster; location pointing to a subfolder of a single backup rather than the backup-set root.
Related errors
- cannot parse backup location
- Exceeded query edge limit = %v. Found %v edges.
- not enough backups to restore manifest with backupNum %d
- another restore operation is already running
- Pending transactions found. Please retry operation
AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01).
Data as JSON: /api/errors/ec972767d34c9917.
Report an issue: GitHub.