commit | 67f06af15bc961c363a7260195bcd53487529a21 | [log] [tgz] |
---|---|---|
author | Cuong Manh Le <cuong.manhle.vn@gmail.com> | Tue Oct 20 20:53:02 2020 +0700 |
committer | Cuong Manh Le <cuong.manhle.vn@gmail.com> | Tue Oct 20 16:03:32 2020 +0000 |
tree | b8d57aa3881802e77fe46c004ca555a73d4437b0 | |
parent | b3e1573b75205f2905c4b27986413d2e2be9803c [diff] |
singleflight: fix flaky TestForget There can be a race condition in current TestForget, that said when "close(secondCh)" is executed, the second goroutine will be finished immediately, causing the third "g.Do" is evaluated. To fix this, we change to use "g.DoChan" for both second and third. In second, we block to make sure it's still running at the time we call third. after then we unblock second and verify the result. Fixes golang/go#42092 Change-Id: I980fdf109a531e2b7a74c8149b4fcaa338775e08 Reviewed-on: https://go-review.googlesource.com/c/sync/+/263877 Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This repository provides Go concurrency primitives in addition to the ones provided by the language and “sync” and “sync/atomic” packages.
The easiest way to install is to run go get -u golang.org/x/sync
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/sync
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the sync repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/sync:” in the subject line, so it is easy to find.