Handle deleting already deleted records properly

This commit is contained in:
Tim Shannon
2020-08-12 09:46:48 -05:00
parent 3be86da07f
commit 29bdf9067c
2 changed files with 22 additions and 0 deletions
+3
View File
@@ -50,6 +50,9 @@ func (s *Store) delete(source BucketSource, key, dataType interface{}) error {
value := reflect.New(reflect.TypeOf(dataType)).Interface()
bVal := b.Get(gk)
if bVal == nil {
return ErrNotFound
}
err = s.decode(bVal, value)
if err != nil {
+19
View File
@@ -5,10 +5,12 @@
package bolthold_test
import (
"errors"
"testing"
"time"
"github.com/timshannon/bolthold"
bh "github.com/timshannon/bolthold"
bolt "go.etcd.io/bbolt"
)
@@ -179,3 +181,20 @@ func TestDeleteNotFound(t *testing.T) {
})
}
func TestDeleteEOFIssue116(t *testing.T) {
testWrap(t, func(store *bolthold.Store, t *testing.T) {
type Item struct{ Name string }
ok(t, store.Insert("key", &Item{"Name"}))
empty := &Item{}
for i := 1; i < 5; i++ {
err := store.Delete("key", empty)
if err != nil && !errors.Is(err, bh.ErrNotFound) {
t.Fatalf("unexpected error after delete #%d: %v", i, err)
}
}
})
}