Commit fa40048c authored by acud's avatar acud Committed by GitHub

fix: delete blocklist entries (#2156)

parent 32ccb9fc
...@@ -34,10 +34,11 @@ const ( ...@@ -34,10 +34,11 @@ const (
dbSchemaDrain = "drain" dbSchemaDrain = "drain"
dbSchemaCleanInterval = "clean-interval" dbSchemaCleanInterval = "clean-interval"
dbSchemaNoStamp = "no-stamp" dbSchemaNoStamp = "no-stamp"
dbSchemaFlushBlock = "flushblock"
) )
var ( var (
dbSchemaCurrent = dbSchemaNoStamp dbSchemaCurrent = dbSchemaFlushBlock
) )
type migration struct { type migration struct {
...@@ -52,54 +53,29 @@ var schemaMigrations = []migration{ ...@@ -52,54 +53,29 @@ var schemaMigrations = []migration{
{name: dbSchemaDrain, fn: migrateGrace}, {name: dbSchemaDrain, fn: migrateGrace},
{name: dbSchemaCleanInterval, fn: migrateGrace}, {name: dbSchemaCleanInterval, fn: migrateGrace},
{name: dbSchemaNoStamp, fn: migrateStamp}, {name: dbSchemaNoStamp, fn: migrateStamp},
{name: dbSchemaFlushBlock, fn: migrateFB},
} }
func migrateStamp(s *store) error { func migrateFB(s *store) error {
var collectedKeys []string collectedKeys, err := collectKeys(s, "blocklist-")
if err := s.Iterate("postage", func(k, v []byte) (bool, error) { if err != nil {
stk := string(k)
if strings.HasPrefix(stk, "postage") {
collectedKeys = append(collectedKeys, stk)
}
return false, nil
}); err != nil {
return err
}
if err := s.Iterate("batchstore", func(k, v []byte) (bool, error) {
stk := string(k)
if strings.HasPrefix(stk, "batchstore") {
collectedKeys = append(collectedKeys, stk)
}
return false, nil
}); err != nil {
return err
}
if err := s.Iterate("addressbook_entry_", func(k, v []byte) (bool, error) {
stk := string(k)
if strings.HasPrefix(stk, "addressbook_entry_") {
collectedKeys = append(collectedKeys, stk)
}
return false, nil
}); err != nil {
return err return err
} }
return deleteKeys(s, collectedKeys)
}
for _, v := range collectedKeys { func migrateStamp(s *store) error {
err := s.Delete(v) for _, pfx := range []string{"postage", "batchstore", "addressbook_entry_"} {
collectedKeys, err := collectKeys(s, pfx)
if err != nil { if err != nil {
s.logger.Debugf("error deleting key %s", v) return err
continue }
if err := deleteKeys(s, collectedKeys); err != nil {
return err
} }
s.logger.Debugf("deleted key %s", v)
} }
s.logger.Debugf("deleted keys: %d", len(collectedKeys))
return nil return nil
} }
func migrateGrace(s *store) error { func migrateGrace(s *store) error {
...@@ -195,3 +171,28 @@ func getMigrations(currentSchema, targetSchema string, allSchemeMigrations []mig ...@@ -195,3 +171,28 @@ func getMigrations(currentSchema, targetSchema string, allSchemeMigrations []mig
} }
return migrations, nil return migrations, nil
} }
func collectKeys(s *store, prefix string) (keys []string, err error) {
if err := s.Iterate(prefix, func(k, v []byte) (bool, error) {
stk := string(k)
if strings.HasPrefix(stk, prefix) {
keys = append(keys, stk)
}
return false, nil
}); err != nil {
return nil, err
}
return keys, nil
}
func deleteKeys(s *store, keys []string) error {
for _, v := range keys {
err := s.Delete(v)
if err != nil {
return fmt.Errorf("error deleting key %s: %w", v, err)
}
s.logger.Debugf("deleted key %s", v)
}
s.logger.Debugf("deleted keys: %d", len(keys))
return nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment