errgroup: use consistent read for SetLimit panic This could produce a confusing panic message if the second len(g.sem) call returns 0. Avoid that by reading it once. Change-Id: Ibdb4963f90921bc20427b3f1e2de410638f6cb6b Reviewed-on: https://go-review.googlesource.com/c/sync/+/726280 Reviewed-by: Alan Donovan <adonovan@google.com> Auto-Submit: Alan Donovan <adonovan@google.com> Reviewed-by: Sean Liao <sean@liao.dev> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
diff --git a/errgroup/errgroup.go b/errgroup/errgroup.go index 2f45dbc..f69fd75 100644 --- a/errgroup/errgroup.go +++ b/errgroup/errgroup.go
@@ -144,8 +144,8 @@ g.sem = nil return } - if len(g.sem) != 0 { - panic(fmt.Errorf("errgroup: modify limit while %v goroutines in the group are still active", len(g.sem))) + if active := len(g.sem); active != 0 { + panic(fmt.Errorf("errgroup: modify limit while %v goroutines in the group are still active", active)) } g.sem = make(chan token, n) }