From 8fcdb60fdcc0539c5e357b2308249e4e752147f1 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Thu, 29 Sep 2022 11:59:30 +0700 Subject: [PATCH] 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 Reviewed-by: Bryan Mills TryBot-Result: Gopher Robot Auto-Submit: Cuong Manh Le Reviewed-by: Dmitri Shuralyov --- singleflight/singleflight.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 @@ func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) { 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) }