diff --git a/eventstore/mmm/fuzz_test.go b/eventstore/mmm/fuzz_test.go index 725bd8e..dbbc86c 100644 --- a/eventstore/mmm/fuzz_test.go +++ b/eventstore/mmm/fuzz_test.go @@ -88,13 +88,13 @@ func FuzzTest(f *testing.F) { } // verify each layer has the correct events - for _, layer := range mmmm.layers { + for i, layer := range mmmm.layers { count := 0 - for evt := range layer.QueryEvents(nostr.Filter{}, 500) { + for evt := range layer.QueryEvents(nostr.Filter{}, 11000) { require.True(t, evt.Tags.ContainsAny("t", []string{layer.name})) count++ } - require.Equal(t, count, len(storedByLayer[layer.name])) + require.Equal(t, count, len(storedByLayer[layer.name]), "layer %d ('%s')", i, layer.name) } // randomly select n events to delete from random layers @@ -147,13 +147,13 @@ func FuzzTest(f *testing.F) { for _, layer := range mmmm.layers { // verify event still accessible from other layers if slices.Contains(foundlayers, layer) { - next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 500)) // hack + next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 11000)) // hack _, fetched := next() require.True(t, fetched) stop() } else { // and not accessible from this layer we just deleted - next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 500)) // hack + next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 11000)) // hack _, fetched := next() require.True(t, fetched) stop() @@ -165,7 +165,7 @@ func FuzzTest(f *testing.F) { // now delete a layer and events that only exist in that layer should vanish layer := mmmm.layers[rnd.Int()%len(mmmm.layers)] eventsThatShouldVanish := make([]nostr.ID, 0, nevents/2) - for evt := range layer.QueryEvents(nostr.Filter{}, 500) { + for evt := range layer.QueryEvents(nostr.Filter{}, 11000) { if len(evt.Tags) == 1+len(deleted[evt.ID]) { eventsThatShouldVanish = append(eventsThatShouldVanish, evt.ID) } diff --git a/eventstore/mmm/save.go b/eventstore/mmm/save.go index 5b67d97..23974ac 100644 --- a/eventstore/mmm/save.go +++ b/eventstore/mmm/save.go @@ -42,8 +42,14 @@ func (il *IndexingLayer) SaveEvent(evt nostr.Event) error { return err } - mmmtxn.Commit() - iltxn.Commit() + if err := mmmtxn.Commit(); err != nil { + return err + } + + if err := iltxn.Commit(); err != nil { + return err + } + return nil } @@ -152,7 +158,7 @@ func (b *MultiMmapManager) storeOn( val = binary.BigEndian.AppendUint16(val, il.id) } - // store the id index with the refcounts + // store the id index with the layer references if err := mmmtxn.Put(b.indexId, evt.ID[0:8], val, 0); err != nil { panic(fmt.Errorf("failed to store %x by id: %w", evt.ID[:], err)) } diff --git a/eventstore/mmm/testdata/fuzz/FuzzTest/b633cd02db315e52 b/eventstore/mmm/testdata/fuzz/FuzzTest/b633cd02db315e52 new file mode 100644 index 0000000..bffa7a6 --- /dev/null +++ b/eventstore/mmm/testdata/fuzz/FuzzTest/b633cd02db315e52 @@ -0,0 +1,5 @@ +go test fuzz v1 +int(-196) +uint(69) +uint(536) +uint(128)