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) 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 return err
} }
b.lmdbEnv = env b.lmdbEnv = env
-1
View File
@@ -54,7 +54,6 @@ func (b *LMDBBackend) queryByIds(txn *lmdb.Txn, ids []nostr.ID, yield func(nostr
continue continue
} }
txn.Get(b.rawEventStore, idx)
bin, err := txn.Get(b.rawEventStore, idx) bin, err := txn.Get(b.rawEventStore, idx)
if err != nil { if err != nil {
continue continue
+6 -11
View File
@@ -2,7 +2,6 @@ package lmdb
import ( import (
"fmt" "fmt"
"iter"
"fiatjaf.com/nostr" "fiatjaf.com/nostr"
"github.com/PowerDNS/lmdb-go/lmdb" "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 // 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 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 nostr.IsOlder(previous, evt) {
if qerr := b.delete(txn, previous.ID); qerr != nil { 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) deleted = append(deleted, previous)
} else { } else {
// there is a newer event already stored, so we won't store this // there is a newer event already stored, so we won't store this
shouldStore = false shouldStore = false
} }
return true
}); qerr != nil {
return fmt.Errorf("failed to query past events with %s: %w", filter, qerr)
} }
if shouldStore { if shouldStore {
return b.save(txn, evt) return b.save(txn, evt)