Membership: Add additional methods to trim/manage membership data in backend.

This commit is contained in:
Piotr Tabor
2021-04-02 18:01:26 +02:00
parent aa6597384b
commit 7ae3d25f91
4 changed files with 42 additions and 14 deletions

View File

@ -28,6 +28,7 @@ import (
type BatchTx interface {
ReadTx
UnsafeCreateBucket(name []byte)
UnsafeDeleteBucket(name []byte)
UnsafePut(bucketName []byte, key []byte, value []byte)
UnsafeSeqPut(bucketName []byte, key []byte, value []byte)
UnsafeDelete(bucketName []byte, key []byte)
@ -80,6 +81,18 @@ func (t *batchTx) UnsafeCreateBucket(name []byte) {
t.pending++
}
func (t *batchTx) UnsafeDeleteBucket(name []byte) {
err := t.tx.DeleteBucket(name)
if err != nil && err != bolt.ErrBucketNotFound {
t.backend.lg.Fatal(
"failed to delete a bucket",
zap.String("bucket-name", string(name)),
zap.Error(err),
)
}
t.pending++
}
// UnsafePut must be called holding the lock on the tx.
func (t *batchTx) UnsafePut(bucketName []byte, key []byte, value []byte) {
t.unsafePut(bucketName, key, value, false)