Revert "nostrdb: close database when backgrounded"

This reverts commit da2bdad18d.

This commit was reverted because it was causing crashes (Occasional `EXC_BAD_ACCESS` errors when accessing database transactions), and because the push notification extension uses Ndb in a read-only manner, which means we no longer need these changes

Signed-off-by: Daniel D’Aquino <daniel@daquino.me>
This commit is contained in:
Daniel D’Aquino
2023-12-22 21:25:02 +00:00
committed by William Casarin
parent 6e0af0ba10
commit 26bd50c948
3 changed files with 8 additions and 67 deletions

View File

@@ -448,25 +448,18 @@ struct ContentView: View {
break
}
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { obj in
print("📙 DAMUS ACTIVE NOTIFY")
try? damus_state.ndb.reopen()
}
.onChange(of: scenePhase) { (phase: ScenePhase) in
guard let damus_state else { return }
switch phase {
case .background:
print("📙 DAMUS BACKGROUNDED")
Task { @MainActor in
damus_state.ndb.close()
}
break
case .inactive:
print("📙 DAMUS INACTIVE")
break
case .active:
print("📙 DAMUS ACTIVE")
damus_state.pool.ping()
guard let ds = damus_state else { return }
ds.pool.ping()
@unknown default:
break
}

View File

@@ -15,23 +15,8 @@ enum NdbSearchOrder {
case newest_first
}
enum DatabaseError: Error {
case failed_open
var errorDescription: String? {
switch self {
case .failed_open:
return "Failed to open database"
}
}
}
class Ndb {
var ndb: ndb_t
let path: String?
let owns_db: Bool
var closed: Bool
let ndb: ndb_t
static func safemode() -> Ndb? {
guard let path = db_path ?? old_db_path else { return nil }
@@ -73,8 +58,8 @@ class Ndb {
static var empty: Ndb {
Ndb(ndb: ndb_t(ndb: nil))
}
static func open(path: String? = nil, owns_db_file: Bool = true) -> ndb_t? {
init?(path: String? = nil, owns_db_file: Bool = true) {
var ndb_p: OpaquePointer? = nil
let ingest_threads: Int32 = 4
@@ -117,20 +102,9 @@ class Ndb {
return nil
}
return ndb_t(ndb: ndb_p)
self.ndb = ndb_t(ndb: ndb_p)
}
init?(path: String? = nil, owns_db_file: Bool = true) {
guard let db = Self.open(path: path, owns_db_file: owns_db_file) else {
return nil
}
self.path = path
self.owns_db = owns_db_file
self.ndb = db
self.closed = false
}
private static func migrate_db_location_if_needed() throws {
guard let old_db_path, let db_path else {
throw Errors.cannot_find_db_path
@@ -170,23 +144,6 @@ class Ndb {
init(ndb: ndb_t) {
self.ndb = ndb
self.path = nil
self.owns_db = true
self.closed = false
}
func close() {
self.closed = true
ndb_destroy(self.ndb.ndb)
}
func reopen() throws {
guard self.closed,
let db = Self.open(path: self.path, owns_db_file: self.owns_db) else {
throw DatabaseError.failed_open
}
self.ndb = db
}
func lookup_note_by_key_with_txn<Y>(_ key: NoteKey, txn: NdbTxn<Y>) -> NdbNote? {
@@ -387,14 +344,12 @@ class Ndb {
}
func process_event(_ str: String) -> Bool {
guard !closed else { return false }
return str.withCString { cstr in
return ndb_process_event(ndb.ndb, cstr, Int32(str.utf8.count)) != 0
}
}
func process_events(_ str: String) -> Bool {
guard !closed else { return false }
return str.withCString { cstr in
return ndb_process_events(ndb.ndb, cstr, str.utf8.count) != 0
}
@@ -432,7 +387,7 @@ class Ndb {
}
deinit {
self.close()
ndb_destroy(ndb.ndb)
}
}

View File

@@ -29,14 +29,7 @@ class NdbTxn<T> {
self.inherited = true
} else {
self.txn = ndb_txn()
let ok = ndb_begin_query(ndb.ndb.ndb, &self.txn) != 0
if !ok {
self.moved = false
self.txn = ndb_txn()
self.inherited = true
self.val = with(self)
return
}
let _ = ndb_begin_query(ndb.ndb.ndb, &self.txn)
Thread.current.threadDictionary["ndb_txn"] = self.txn
self.inherited = false
}