1
0
mirror of https://github.com/golang/go synced 2024-11-26 18:16:48 -07:00

internal/singleflight: make DoChan only return Result channel

So next CL can delete "internal/singleflight" and vendor
"golang.org/x/sync/singleflight" instead.

For #31697

Change-Id: I020da1e5a48d484637b538c010029218f5a4a744
Reviewed-on: https://go-review.googlesource.com/c/go/+/423655
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Cuong Manh Le 2022-08-14 00:35:24 +07:00
parent 7ee220c567
commit 75cdd2c75d
2 changed files with 5 additions and 7 deletions

View File

@ -65,10 +65,8 @@ func (g *Group) Do(key string, fn func() (any, error)) (v any, err error, shared
}
// DoChan is like Do but returns a channel that will receive the
// results when they are ready. The second result is true if the function
// will eventually be called, false if it will not (because there is
// a pending request with this key).
func (g *Group) DoChan(key string, fn func() (any, error)) (<-chan Result, bool) {
// results when they are ready.
func (g *Group) DoChan(key string, fn func() (any, error)) <-chan Result {
ch := make(chan Result, 1)
g.mu.Lock()
if g.m == nil {
@ -78,7 +76,7 @@ func (g *Group) DoChan(key string, fn func() (any, error)) (<-chan Result, bool)
c.dups++
c.chans = append(c.chans, ch)
g.mu.Unlock()
return ch, false
return ch
}
c := &call{chans: []chan<- Result{ch}}
c.wg.Add(1)
@ -87,7 +85,7 @@ func (g *Group) DoChan(key string, fn func() (any, error)) (<-chan Result, bool)
go g.doCall(c, key, fn)
return ch, true
return ch
}
// doCall handles the single call for a key.

View File

@ -316,7 +316,7 @@ func (r *Resolver) lookupIPAddr(ctx context.Context, network, host string) ([]IP
lookupKey := network + "\000" + host
dnsWaitGroup.Add(1)
ch, _ := r.getLookupGroup().DoChan(lookupKey, func() (any, error) {
ch := r.getLookupGroup().DoChan(lookupKey, func() (any, error) {
return testHookLookupIP(lookupGroupCtx, resolverFunc, network, host)
})