backup: Fix shutdown hang when running in the background

On shutdown the backup commands waits for the terminal output goroutine
to stop. However while running in the background the goroutine ignored
the canceled context.
This commit is contained in:
Michael Eischer 2020-12-06 18:28:19 +01:00
parent 3264eae9f6
commit 401ef92c5f
2 changed files with 10 additions and 4 deletions

View File

@ -0,0 +1,8 @@
Bugfix: On Linux `backup` hangs during exit when run as a background job
On Linux, when running in the background restic failed to stop the terminal
output of the `backup` command after it had completed. This caused restic to
hang until moved to the foreground. This has been fixed.
https://github.com/restic/restic/pull/3152
https://forum.restic.net/t/restic-alpine-container-cron-hangs-epoll-pwait/3334

View File

@ -96,11 +96,9 @@ func (t *Terminal) run(ctx context.Context) {
for { for {
select { select {
case <-ctx.Done(): case <-ctx.Done():
if IsProcessBackground(t.fd) { if !IsProcessBackground(t.fd) {
// ignore all messages, do nothing, we are in the background process group
continue
}
t.undoStatus(len(status)) t.undoStatus(len(status))
}
return return