diff --git a/lib/db/backend/badger_backend.go b/lib/db/backend/badger_backend.go index 5af385d79..9b5f8dff7 100644 --- a/lib/db/backend/badger_backend.go +++ b/lib/db/backend/badger_backend.go @@ -334,6 +334,7 @@ type badgerIterator struct { first []byte last []byte releaseFn func() + released bool didSeek bool err error } @@ -397,6 +398,12 @@ func (i *badgerIterator) Error() error { } func (i *badgerIterator) Release() { + if i.released { + // We already closed this iterator, no need to do it again + // (and the releaseFn might hang if we do). + return + } + i.released = true i.it.Close() if i.releaseFn != nil { i.releaseFn()