lmdb: two small fixes, and stop doing WRITEMAP so it stops crashing.

This commit is contained in:
fiatjaf
2026-04-11 15:24:37 -03:00
parent 1794f0690f
commit 181de14642
3 changed files with 7 additions and 13 deletions
+1 -1
View File
@@ -109,7 +109,7 @@ func (b *LMDBBackend) initialize() error {
env.SetMapSize(b.MapSize)
}
if err := env.Open(b.Path, lmdb.NoTLS|lmdb.WriteMap|b.extraFlags, 0644); err != nil {
if err := env.Open(b.Path, lmdb.NoTLS|b.extraFlags, 0644); err != nil {
return err
}
b.lmdbEnv = env
-1
View File
@@ -54,7 +54,6 @@ func (b *LMDBBackend) queryByIds(txn *lmdb.Txn, ids []nostr.ID, yield func(nostr
continue
}
txn.Get(b.rawEventStore, idx)
bin, err := txn.Get(b.rawEventStore, idx)
if err != nil {
continue
+6 -11
View File
@@ -2,7 +2,6 @@ package lmdb
import (
"fmt"
"iter"
"fiatjaf.com/nostr"
"github.com/PowerDNS/lmdb-go/lmdb"
@@ -26,25 +25,21 @@ func (b *LMDBBackend) ReplaceEvent(evt nostr.Event) (deleted []nostr.Event, err
}
// now we fetch the past events, whatever they are, delete them and then save the new
var qerr error
var results iter.Seq[nostr.Event] = func(yield func(nostr.Event) bool) {
qerr = b.query(txn, filter, 10 /* in theory limit could be just 1 and this should work */, yield)
}
if qerr != nil {
return fmt.Errorf("failed to query past events with %s: %w", filter, qerr)
}
shouldStore := true
for previous := range results {
if qerr := b.query(txn, filter, 10 /* could be just 1 */, func(previous nostr.Event) bool {
if nostr.IsOlder(previous, evt) {
if qerr := b.delete(txn, previous.ID); qerr != nil {
return fmt.Errorf("failed to delete event %s for replacing: %w", previous.ID, qerr)
qerr = fmt.Errorf("failed to delete event %s for replacing: %w", previous.ID, qerr)
return false
}
deleted = append(deleted, previous)
} else {
// there is a newer event already stored, so we won't store this
shouldStore = false
}
return true
}); qerr != nil {
return fmt.Errorf("failed to query past events with %s: %w", filter, qerr)
}
if shouldStore {
return b.save(txn, evt)