@@ -64,19 +64,16 @@ type View struct {
64
64
explicitGowork span.URI // explicitGowork: if non-empty, a user-specified go.work location (TODO: deprecate)
65
65
workspaceInformation // grab-bag of Go environment information (TODO: cleanup)
66
66
67
- // mu protects most mutable state of the view.
68
- //
69
- // TODO(rfindley): specify exactly which mutable state is guarded.
70
- mu sync.Mutex
71
-
72
67
importsState * importsState
73
68
74
69
// moduleUpgrades tracks known upgrades for module paths in each modfile.
75
70
// Each modfile has a map of module name to upgrade version.
76
- moduleUpgrades map [span.URI ]map [string ]string
71
+ moduleUpgradesMu sync.Mutex
72
+ moduleUpgrades map [span.URI ]map [string ]string
77
73
78
74
// vulns maps each go.mod file's URI to its known vulnerabilities.
79
- vulns map [span.URI ]* govulncheck.Result
75
+ vulnsMu sync.Mutex
76
+ vulns map [span.URI ]* govulncheck.Result
80
77
81
78
// filesByURI maps URIs to the canonical URI for the file it denotes.
82
79
// We also keep a set of candidates for a given basename
@@ -997,8 +994,8 @@ func (v *View) IsGoPrivatePath(target string) bool {
997
994
}
998
995
999
996
func (v * View ) ModuleUpgrades (modfile span.URI ) map [string ]string {
1000
- v .mu .Lock ()
1001
- defer v .mu .Unlock ()
997
+ v .moduleUpgradesMu .Lock ()
998
+ defer v .moduleUpgradesMu .Unlock ()
1002
999
1003
1000
upgrades := map [string ]string {}
1004
1001
for mod , ver := range v .moduleUpgrades [modfile ] {
@@ -1013,8 +1010,8 @@ func (v *View) RegisterModuleUpgrades(modfile span.URI, upgrades map[string]stri
1013
1010
return
1014
1011
}
1015
1012
1016
- v .mu .Lock ()
1017
- defer v .mu .Unlock ()
1013
+ v .moduleUpgradesMu .Lock ()
1014
+ defer v .moduleUpgradesMu .Unlock ()
1018
1015
1019
1016
m := v .moduleUpgrades [modfile ]
1020
1017
if m == nil {
@@ -1027,8 +1024,8 @@ func (v *View) RegisterModuleUpgrades(modfile span.URI, upgrades map[string]stri
1027
1024
}
1028
1025
1029
1026
func (v * View ) ClearModuleUpgrades (modfile span.URI ) {
1030
- v .mu .Lock ()
1031
- defer v .mu .Unlock ()
1027
+ v .moduleUpgradesMu .Lock ()
1028
+ defer v .moduleUpgradesMu .Unlock ()
1032
1029
1033
1030
delete (v .moduleUpgrades , modfile )
1034
1031
}
@@ -1039,8 +1036,8 @@ var timeNow = time.Now // for testing
1039
1036
func (v * View ) Vulnerabilities (modfiles ... span.URI ) map [span.URI ]* govulncheck.Result {
1040
1037
m := make (map [span.URI ]* govulncheck.Result )
1041
1038
now := timeNow ()
1042
- v .mu .Lock ()
1043
- defer v .mu .Unlock ()
1039
+ v .vulnsMu .Lock ()
1040
+ defer v .vulnsMu .Unlock ()
1044
1041
1045
1042
if len (modfiles ) == 0 { // empty means all modfiles
1046
1043
for modfile := range v .vulns {
@@ -1059,8 +1056,8 @@ func (v *View) Vulnerabilities(modfiles ...span.URI) map[span.URI]*govulncheck.R
1059
1056
}
1060
1057
1061
1058
func (v * View ) SetVulnerabilities (modfile span.URI , vulns * govulncheck.Result ) {
1062
- v .mu .Lock ()
1063
- defer v .mu .Unlock ()
1059
+ v .vulnsMu .Lock ()
1060
+ defer v .vulnsMu .Unlock ()
1064
1061
1065
1062
v .vulns [modfile ] = vulns
1066
1063
}
0 commit comments