[#1944] metabase: Recreate static buckets instead of resetting

From the `Bucket.ForEach` doc:
```
The provided function must not modify the bucket; this will result in undefined behavior.
```

Signed-off-by: Evgenii Stratonikov <evgeniy@morphbits.ru>
This commit is contained in:
Evgenii Stratonikov 2022-10-26 09:04:21 +03:00 committed by fyrchik
parent 3c6daa2995
commit e4bc3d0e9d
2 changed files with 9 additions and 18 deletions

View file

@ -106,15 +106,17 @@ func (db *DB) init(reset bool) error {
}
}
for k := range mStaticBuckets {
b, err := tx.CreateBucketIfNotExists([]byte(k))
if err != nil {
return fmt.Errorf("could not create static bucket %s: %w", k, err)
name := []byte(k)
if reset {
err := tx.DeleteBucket(name)
if err != nil && !errors.Is(err, bbolt.ErrBucketNotFound) {
return fmt.Errorf("could not delete static bucket %s: %w", k, err)
}
}
if reset {
if err = resetBucket(b); err != nil {
return fmt.Errorf("could not reset static bucket %s: %w", k, err)
}
_, err := tx.CreateBucketIfNotExists(name)
if err != nil {
return fmt.Errorf("could not create static bucket %s: %w", k, err)
}
}