From f02fe73c3d035ecd75ab566aa0442ffd8cec8a14 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 12:42:21 +0000 Subject: [PATCH] Update module github.com/vbauerster/mpb/v8 to v8.7.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 +- vendor/github.com/vbauerster/mpb/v8/bar.go | 21 +++--- .../github.com/vbauerster/mpb/v8/progress.go | 74 ++++++++++++------- vendor/modules.txt | 2 +- 5 files changed, 61 insertions(+), 42 deletions(-) diff --git a/go.mod b/go.mod index d4d2998c18..db2d143326 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 github.com/ulikunitz/xz v0.5.11 - github.com/vbauerster/mpb/v8 v8.7.0 + github.com/vbauerster/mpb/v8 v8.7.1 github.com/vishvananda/netlink v1.2.1-beta.2 go.etcd.io/bbolt v1.3.8 golang.org/x/exp v0.0.0-20231006140011-7918f672742d diff --git a/go.sum b/go.sum index 6ab0a2476a..df9f924730 100644 --- a/go.sum +++ b/go.sum @@ -1074,8 +1074,8 @@ github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN github.com/vbatts/tar-split v0.11.2/go.mod h1:vV3ZuO2yWSVsz+pfFzDG/upWH1JhjOiEaWq6kXyQ3VI= github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= -github.com/vbauerster/mpb/v8 v8.7.0 h1:n2LTGyol7qqNBcLQn8FL5Bga2O8CGF75OOYsJVFsfMg= -github.com/vbauerster/mpb/v8 v8.7.0/go.mod h1:0RgdqeTpu6cDbdWeSaDvEvfgm9O598rBnRZ09HKaV0k= +github.com/vbauerster/mpb/v8 v8.7.1 h1:bQoSMMTFAg/gjsLrBYmO8gbRcZt7aDq6WI2IMa9BTqM= +github.com/vbauerster/mpb/v8 v8.7.1/go.mod h1:fWgXcAu4W+0cBSUh4ZlaKJyC2KtgU27ZSTaiIk0QNsQ= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= diff --git a/vendor/github.com/vbauerster/mpb/v8/bar.go b/vendor/github.com/vbauerster/mpb/v8/bar.go index 5f81412109..390bc36a34 100644 --- a/vendor/github.com/vbauerster/mpb/v8/bar.go +++ b/vendor/github.com/vbauerster/mpb/v8/bar.go @@ -429,13 +429,11 @@ func (b *Bar) render(tw int) { return } } - frame := &renderFrame{ - rows: rows, - shutdown: s.shutdown, - rmOnComplete: s.rmOnComplete, - noPop: s.noPop, - } + frame := &renderFrame{rows: rows} if s.completed || s.aborted { + frame.shutdown = s.shutdown + frame.rmOnComplete = s.rmOnComplete + frame.noPop = s.noPop // post increment makes sure OnComplete decorators are rendered s.shutdown++ } @@ -460,12 +458,15 @@ func (b *Bar) triggerCompletion(s *bState) { } func (b *Bar) tryEarlyRefresh(renderReq chan<- time.Time) { - var anyOtherRunning bool + var otherRunning int b.container.traverseBars(func(bar *Bar) bool { - anyOtherRunning = b != bar && bar.IsRunning() - return anyOtherRunning + if b != bar && bar.IsRunning() { + otherRunning++ + return false // stop traverse + } + return true // continue traverse }) - if !anyOtherRunning { + if otherRunning == 0 { for { select { case renderReq <- time.Now(): diff --git a/vendor/github.com/vbauerster/mpb/v8/progress.go b/vendor/github.com/vbauerster/mpb/v8/progress.go index 8c609b463f..0bd17bfbc9 100644 --- a/vendor/github.com/vbauerster/mpb/v8/progress.go +++ b/vendor/github.com/vbauerster/mpb/v8/progress.go @@ -68,14 +68,17 @@ func NewWithContext(ctx context.Context, options ...ContainerOption) *Progress { ctx = context.Background() } ctx, cancel := context.WithCancel(ctx) + delayRC := make(chan struct{}, 1) + delayRC <- struct{}{} s := &pState{ ctx: ctx, hm: make(heapManager), dropS: make(chan struct{}), dropD: make(chan struct{}), renderReq: make(chan time.Time), - refreshRate: defaultRefreshRate, popPriority: math.MinInt32, + refreshRate: defaultRefreshRate, + delayRC: delayRC, queueBars: make(map[*Bar]*Bar), output: os.Stdout, debugOut: io.Discard, @@ -191,7 +194,7 @@ func (p *Progress) traverseBars(cb func(b *Bar) bool) { select { case p.operateState <- func(s *pState) { s.hm.iter(iter, drop) }: for b := range iter { - if cb(b) { + if !cb(b) { close(drop) break } @@ -258,34 +261,52 @@ func (p *Progress) Shutdown() { func (p *Progress) serve(s *pState, cw *cwriter.Writer) { defer p.pwg.Done() - render := func() error { return s.render(cw) } var err error + w := cwriter.New(io.Discard) + renderReq := s.renderReq + operateState := p.operateState + interceptIO := p.interceptIO for { select { - case op := <-p.operateState: + case <-s.delayRC: + w, cw = cw, nil + s.delayRC = nil + case op := <-operateState: op(s) - case fn := <-p.interceptIO: - fn(cw) - case <-s.renderReq: - e := render() - if e != nil { + case fn := <-interceptIO: + fn(w) + case <-renderReq: + err = s.render(w) + if err != nil { + // (*pState).(autoRefreshListener|manualRefreshListener) may block + // if not launching following short lived goroutine + go func() { + for { + select { + case <-s.renderReq: + case <-p.done: + return + } + } + }() p.cancel() // cancel all bars - render = func() error { return nil } - err = e + renderReq = nil + operateState = nil + interceptIO = nil } case <-p.done: - update := make(chan bool) - for s.autoRefresh && err == nil { - s.hm.state(update) - if <-update { - err = render() - } else { - break - } - } if err != nil { _, _ = fmt.Fprintln(s.debugOut, err.Error()) + } else if s.autoRefresh { + update := make(chan bool) + for i := 0; i == 0 || <-update; i++ { + if err := s.render(w); err != nil { + _, _ = fmt.Fprintln(s.debugOut, err.Error()) + break + } + s.hm.state(update) + } } s.hm.end(s.shutdownNotifier) return @@ -293,10 +314,7 @@ func (p *Progress) serve(s *pState, cw *cwriter.Writer) { } } -func (s pState) autoRefreshListener(done chan struct{}) { - if s.delayRC != nil { - <-s.delayRC - } +func (s *pState) autoRefreshListener(done chan struct{}) { ticker := time.NewTicker(s.refreshRate) defer ticker.Stop() for { @@ -310,7 +328,7 @@ func (s pState) autoRefreshListener(done chan struct{}) { } } -func (s pState) manualRefreshListener(done chan struct{}) { +func (s *pState) manualRefreshListener(done chan struct{}) { for { select { case x := <-s.manualRC: @@ -342,9 +360,9 @@ func (s *pState) render(cw *cwriter.Writer) (err error) { if s.reqWidth > 0 { width = s.reqWidth } else { - width = 100 + width = 80 } - height = 100 + height = width } for b := range iter { @@ -420,7 +438,7 @@ func (s *pState) flush(cw *cwriter.Writer, height int) error { return cw.Flush(len(rows) - popCount) } -func (s pState) push(wg *sync.WaitGroup, b *Bar, sync bool) { +func (s *pState) push(wg *sync.WaitGroup, b *Bar, sync bool) { s.hm.push(b, sync) wg.Done() } diff --git a/vendor/modules.txt b/vendor/modules.txt index 0ad2b8f2ce..db341c4230 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1057,7 +1057,7 @@ github.com/ulikunitz/xz/lzma github.com/vbatts/tar-split/archive/tar github.com/vbatts/tar-split/tar/asm github.com/vbatts/tar-split/tar/storage -# github.com/vbauerster/mpb/v8 v8.7.0 +# github.com/vbauerster/mpb/v8 v8.7.1 ## explicit; go 1.17 github.com/vbauerster/mpb/v8 github.com/vbauerster/mpb/v8/cwriter