backup: cleanly shutdown goroutines on error

This commit is contained in:
Michael Eischer 2021-05-15 23:06:12 +02:00
parent 5767c65c62
commit fd8bce8184
2 changed files with 8 additions and 6 deletions

View File

@ -708,15 +708,17 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, term *termstatus.Termina
p.V("start backup on %v", targets)
}
_, id, err := arch.Snapshot(gopts.ctx, targets, snapshotOpts)
if err != nil {
return errors.Fatalf("unable to save snapshot: %v", err)
}
// cleanly shutdown all running goroutines
t.Kill(nil)
// let's see if one returned an error
err = t.Wait()
werr := t.Wait()
// return original error
if err != nil {
return errors.Fatalf("unable to save snapshot: %v", err)
}
// Report finished execution
p.Finish(id)
@ -728,5 +730,5 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, term *termstatus.Termina
}
// Return error if any
return err
return werr
}

View File

@ -32,7 +32,7 @@ func deleteFiles(gopts GlobalOptions, ignoreError bool, repo restic.Repository,
select {
case fileChan <- id:
case <-ctx.Done():
return nil
return ctx.Err()
}
}
return nil