singleflight: avoid race between multiple Do calls This is port of CL 436437, but without the test. ForgotUnshared has not been ported here yet. Change-Id: Id54d0c41d1a7948bf008e458c44b21670ada81e4 Reviewed-on: https://go-review.googlesource.com/c/sync/+/436495 Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
diff --git a/singleflight/singleflight.go b/singleflight/singleflight.go index 7c7fc50..8473fb7 100644 --- a/singleflight/singleflight.go +++ b/singleflight/singleflight.go
@@ -144,9 +144,9 @@ c.err = errGoexit } - c.wg.Done() g.mu.Lock() defer g.mu.Unlock() + c.wg.Done() if g.m[key] == c { delete(g.m, key) }