Fixup data race when updating revdeps

This commit is contained in:
Ettore Di Giacinto
2021-08-09 14:09:10 +02:00
parent 97ff647f07
commit 57cefc7d6b

View File

@@ -197,8 +197,6 @@ func (db *InMemoryDatabase) CreatePackage(p Package) (string, error) {
} }
func (db *InMemoryDatabase) updateRevDep(k, v string, b Package) { func (db *InMemoryDatabase) updateRevDep(k, v string, b Package) {
db.Lock()
defer db.Unlock()
_, ok := db.RevDepsDatabase[k] _, ok := db.RevDepsDatabase[k]
if !ok { if !ok {
db.RevDepsDatabase[k] = make(map[string]Package) db.RevDepsDatabase[k] = make(map[string]Package)
@@ -245,7 +243,6 @@ func (db *InMemoryDatabase) populateCaches(p Package) {
// the version selector // the version selector
db.Lock() db.Lock()
toUpdate, ok := db.RevDepsDatabase[pd.GetPackageName()] toUpdate, ok := db.RevDepsDatabase[pd.GetPackageName()]
db.Unlock()
if ok { if ok {
for _, pp := range toUpdate { for _, pp := range toUpdate {
for _, re := range pp.GetRequires() { for _, re := range pp.GetRequires() {
@@ -265,6 +262,7 @@ func (db *InMemoryDatabase) populateCaches(p Package) {
db.updateRevDep(re.GetFingerPrint(), pd.GetFingerPrint(), pd) db.updateRevDep(re.GetFingerPrint(), pd.GetFingerPrint(), pd)
db.updateRevDep(re.GetPackageName(), pd.GetPackageName(), pd) db.updateRevDep(re.GetPackageName(), pd.GetPackageName(), pd)
} }
db.Unlock()
} }
func (db *InMemoryDatabase) getProvide(p Package) (Package, error) { func (db *InMemoryDatabase) getProvide(p Package) (Package, error) {