From 78c5a47fc9443f60d8bc75aff40dbdb4d9d32dc6 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Thu, 9 Sep 2021 14:19:21 +0200 Subject: vendor mpb@v7.1.4 Fixes a race condition leading to a deadlock. Thanks to @mtrmac and @vbauerster for fixing the issue! Signed-off-by: Valentin Rothberg --- vendor/github.com/vbauerster/mpb/v7/bar.go | 38 +++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'vendor/github.com/vbauerster/mpb/v7/bar.go') diff --git a/vendor/github.com/vbauerster/mpb/v7/bar.go b/vendor/github.com/vbauerster/mpb/v7/bar.go index 95d4439f8..22f608317 100644 --- a/vendor/github.com/vbauerster/mpb/v7/bar.go +++ b/vendor/github.com/vbauerster/mpb/v7/bar.go @@ -268,32 +268,32 @@ func (b *Bar) SetPriority(priority int) { // if bar is already in complete state. If drop is true bar will be // removed as well. func (b *Bar) Abort(drop bool) { - if drop { - b.container.dropBar(b) // It is safe to call this multiple times with the same bar - } select { case b.operateState <- func(s *bState) { if s.completed == true { return } if drop { - b.cancel() - return - } - go func() { - var uncompleted int - b.container.traverseBars(func(bar *Bar) bool { - if b != bar && !bar.Completed() { - uncompleted++ - return false + go b.container.dropBar(b) + } else { + go func() { + var uncompleted int + b.container.traverseBars(func(bar *Bar) bool { + if b != bar && !bar.Completed() { + uncompleted++ + return false + } + return true + }) + if uncompleted == 0 { + select { + case b.container.refreshCh <- time.Now(): + case <-b.container.done: + } } - return true - }) - if uncompleted == 0 { - b.container.refreshCh <- time.Now() - } - b.cancel() - }() + }() + } + b.cancel() }: <-b.done case <-b.done: -- cgit v1.2.3-54-g00ecf