]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: modload should use a read-write lock to improve concurrency
authorRoy Reznik <roy@wiz.io>
Sun, 22 Jun 2025 12:37:23 +0000 (12:37 +0000)
committerMichael Matloob <matloob@google.com>
Fri, 1 Aug 2025 18:56:27 +0000 (11:56 -0700)
This PR will be imported into Gerrit with the title and first
comment (this text) used to generate the subject and body of
the Gerrit change.

Change-Id: I3f9bc8a2459059a924a04fa02794e258957819b5
GitHub-Last-Rev: 6ad6f6a70e21dc45fc0c880b8732fb87c656c520
GitHub-Pull-Request: golang/go#74311
Reviewed-on: https://go-review.googlesource.com/c/go/+/683215
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Ian Alexander <jitsu@google.com>
Reviewed-by: Michael Matloob <matloob@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/go/internal/modload/init.go

index e537fddfcd8b5b0d77c677ba9f691b7b22eea018..cb9d74df68cb5ba56e97b978e3f4e41060f81749 100644 (file)
@@ -149,7 +149,7 @@ type MainModuleSet struct {
        // highest replaced version of each module path; empty string for wildcard-only replacements
        highestReplaced map[string]string
 
-       indexMu sync.Mutex
+       indexMu sync.RWMutex
        indices map[module.Version]*modFileIndex
 }
 
@@ -228,8 +228,8 @@ func (mms *MainModuleSet) GetSingleIndexOrNil() *modFileIndex {
 }
 
 func (mms *MainModuleSet) Index(m module.Version) *modFileIndex {
-       mms.indexMu.Lock()
-       defer mms.indexMu.Unlock()
+       mms.indexMu.RLock()
+       defer mms.indexMu.RUnlock()
        return mms.indices[m]
 }