diff --git a/worker/restore.go b/worker/restore.go index 4279cd9fe65..0f3081068ff 100644 --- a/worker/restore.go +++ b/worker/restore.go @@ -47,6 +47,22 @@ func RunRestore(pdir, location, backupId, keyfile string) LoadResult { func(r io.Reader, groupId int, preds predicateSet) (uint64, error) { dir := filepath.Join(pdir, fmt.Sprintf("p%d", groupId)) + r, err := enc.GetReader(keyfile, r) + if err != nil { + return 0, err + } + + gzReader, err := gzip.NewReader(r) + if err != nil { + if len(keyfile) != 0 { + err = errors.Wrap(err, + "Unable to read the backup. Ensure the encryption key is correct.") + } + return 0, err + + } + // The badger DB should be opened only after creating the backup + // file reader and verifying the encryption in the backup file. db, err := badger.OpenManaged(badger.DefaultOptions(dir). WithSyncWrites(false). WithTableLoadingMode(options.MemoryMap). @@ -61,14 +77,7 @@ func RunRestore(pdir, location, backupId, keyfile string) LoadResult { if !pathExist(dir) { fmt.Println("Creating new db:", dir) } - r, err = enc.GetReader(keyfile, r) - if err != nil { - return 0, err - } - gzReader, err := gzip.NewReader(r) - if err != nil { - return 0, err - } + maxUid, err := loadFromBackup(db, gzReader, preds) if err != nil { return 0, err