From fd8bce818458f622bb5c40e6f296eb84aece1c1a Mon Sep 17 00:00:00 2001 From: Michael Eischer Date: Sat, 15 May 2021 23:06:12 +0200 Subject: [PATCH] backup: cleanly shutdown goroutines on error --- cmd/restic/cmd_backup.go | 12 +++++++----- cmd/restic/delete.go | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cmd/restic/cmd_backup.go b/cmd/restic/cmd_backup.go index afe213732..a285f851d 100644 --- a/cmd/restic/cmd_backup.go +++ b/cmd/restic/cmd_backup.go @@ -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 } diff --git a/cmd/restic/delete.go b/cmd/restic/delete.go index 4b9ac3e4f..98dd91ece 100644 --- a/cmd/restic/delete.go +++ b/cmd/restic/delete.go @@ -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