Skip to content

Commit

Permalink
reduce loop iteration complexity of checkStoreUpgrade in v2
Browse files Browse the repository at this point in the history
  • Loading branch information
winniehere committed Sep 18, 2024
1 parent 3fa3b2a commit d59ef7d
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions runtime/v2/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,29 +102,31 @@ func checkStoreUpgrade(storeUpgrades *store.StoreUpgrades) error {
}

// check for duplicates
exists := make(map[string]bool)
addedFilter := make(map[string]struct{})
deletedFilter := make(map[string]struct{})

for _, key := range storeUpgrades.Added {
if exists[key] {
if _, ok := addedFilter[key]; ok {
return fmt.Errorf("store upgrade has duplicate key %s in added", key)
}

if storeUpgrades.IsDeleted(key) {
return fmt.Errorf("store upgrade has key %s in both added and deleted", key)
}

exists[key] = true
addedFilter[key] = struct{}{}
}
exists = make(map[string]bool)
for _, key := range storeUpgrades.Deleted {
if exists[key] {
if _, ok := deletedFilter[key]; ok {
return fmt.Errorf("store upgrade has duplicate key %s in deleted", key)
}
deletedFilter[key] = struct{}{}
}

if storeUpgrades.IsAdded(key) {
for _, key := range storeUpgrades.Added {
if _, ok := deletedFilter[key]; ok {
return fmt.Errorf("store upgrade has key %s in both added and deleted", key)
}
}
for _, key := range storeUpgrades.Deleted {
if _, ok := addedFilter[key]; ok {
return fmt.Errorf("store upgrade has key %s in both added and deleted", key)
}

exists[key] = true
}

return nil
Expand Down

0 comments on commit d59ef7d

Please sign in to comment.