aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--singleflight/singleflight.go9
1 files changed, 1 insertions, 8 deletions
diff --git a/singleflight/singleflight.go b/singleflight/singleflight.go
index 690eb85..7c7fc50 100644
--- a/singleflight/singleflight.go
+++ b/singleflight/singleflight.go
@@ -52,10 +52,6 @@ type call struct {
val interface{}
err error
- // forgotten indicates whether Forget was called with this call's key
- // while the call was still in flight.
- forgotten bool
-
// These fields are read and written with the singleflight
// mutex held before the WaitGroup is done, and are read but
// not written after the WaitGroup is done.
@@ -151,7 +147,7 @@ func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) {
c.wg.Done()
g.mu.Lock()
defer g.mu.Unlock()
- if !c.forgotten {
+ if g.m[key] == c {
delete(g.m, key)
}
@@ -204,9 +200,6 @@ func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) {
// an earlier call to complete.
func (g *Group) Forget(key string) {
g.mu.Lock()
- if c, ok := g.m[key]; ok {
- c.forgotten = true
- }
delete(g.m, key)
g.mu.Unlock()
}