mirror of
https://github.com/golang/go
synced 2024-11-17 20:14:45 -07:00
cmd/go/internal/modget: synchronize writes to modOnly map in runGet
Fixes #35317 Change-Id: Id858a25dc16a1bbff1802d25bcd4aca31c1133bc Reviewed-on: https://go-review.googlesource.com/c/go/+/205067 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
f07cbc7f88
commit
7e71c9c3ed
@ -454,6 +454,7 @@ func runGet(cmd *base.Command, args []string) {
|
||||
// This includes explicitly requested modules that don't have a root package
|
||||
// and modules with a target version of "none".
|
||||
var wg sync.WaitGroup
|
||||
var modOnlyMu sync.Mutex
|
||||
modOnly := make(map[string]*query)
|
||||
for _, q := range queries {
|
||||
if q.m.Version == "none" {
|
||||
@ -466,7 +467,9 @@ func runGet(cmd *base.Command, args []string) {
|
||||
if hasPkg, err := modload.ModuleHasRootPackage(q.m); err != nil {
|
||||
base.Errorf("go get: %v", err)
|
||||
} else if !hasPkg {
|
||||
modOnlyMu.Lock()
|
||||
modOnly[q.m.Path] = q
|
||||
modOnlyMu.Unlock()
|
||||
}
|
||||
wg.Done()
|
||||
}(q)
|
||||
|
8
src/cmd/go/testdata/script/mod_issue35317.txt
vendored
Normal file
8
src/cmd/go/testdata/script/mod_issue35317.txt
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# Regression test for golang.org/issue/35317:
|
||||
# 'go get' with multiple module-only arguments was racy.
|
||||
|
||||
env GO111MODULE=on
|
||||
[short] skip
|
||||
|
||||
go mod init example.com
|
||||
go get golang.org/x/text@v0.3.0 golang.org/x/internal@v0.1.0
|
Loading…
Reference in New Issue
Block a user