backup: In case of error also Wait() for terminal goroutine

This prevents a race condition where the final summary message can get lost.
This commit is contained in:
Juergen Hoetzel 2021-02-25 21:43:08 +01:00 committed by Michael Eischer
parent d686fa25de
commit 18fccb5995
2 changed files with 11 additions and 4 deletions

View file

@ -0,0 +1,7 @@
Bugfix: In case of error also Wait() for terminal goroutine
This prevents a race condition where the final summary message is
lost. When using --json output it happened from time to time that the
summary output was missing.
https://github.com/restic/restic/pull/3305

View file

@ -60,11 +60,11 @@ Exit status is 3 if some source data could not be read (incomplete snapshot crea
t.Go(func() error { term.Run(t.Context(globalOptions.ctx)); return nil })
err := runBackup(backupOptions, globalOptions, term, args)
if err != nil {
return err
}
t.Kill(nil)
return t.Wait()
if werr := t.Wait(); werr != nil {
panic(fmt.Sprintf("term.Run() returned err: %v", err))
}
return err
},
}