commit 6e0ba3206d2c75800034adf1c3148c3476dfa73c
parent 010d71d9ed6b6bc93e158121cd0b7544e9767a8f
Author: William Casarin <jb55@jb55.com>
Date: Fri, 26 Jan 2024 10:50:58 -0800
debug: add some transaction debugging
Diffstat:
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/damus/ContentView.swift b/damus/ContentView.swift
@@ -462,23 +462,27 @@ struct ContentView: View {
damus_state.pool.disconnect()
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification)) { obj in
- print("📙 DAMUS ACTIVE NOTIFY")
- try? damus_state.ndb.reopen()
+ print("txn: 📙 DAMUS ACTIVE NOTIFY")
+ if damus_state.ndb.reopen() {
+ print("txn: NOSTRDB REOPENED")
+ } else {
+ print("txn: NOSTRDB FAILED TO REOPEN closed:\(damus_state.ndb.closed)")
+ }
}
.onChange(of: scenePhase) { (phase: ScenePhase) in
guard let damus_state else { return }
switch phase {
case .background:
- print("📙 DAMUS BACKGROUNDED")
+ print("txn: 📙 DAMUS BACKGROUNDED")
Task { @MainActor in
damus_state.ndb.close()
}
break
case .inactive:
- print("📙 DAMUS INACTIVE")
+ print("txn: 📙 DAMUS INACTIVE")
break
case .active:
- print("📙 DAMUS ACTIVE")
+ print("txn: 📙 DAMUS ACTIVE")
damus_state.pool.ping()
@unknown default:
break
diff --git a/damus/Models/DamusState.swift b/damus/Models/DamusState.swift
@@ -94,6 +94,7 @@ struct DamusState: HeadlessDamusState {
}
func close() {
+ print("txn: damus close")
pool.close()
ndb.close()
}
diff --git a/nostrdb/Ndb.swift b/nostrdb/Ndb.swift
@@ -178,17 +178,20 @@ class Ndb {
func close() {
guard !self.closed else { return }
self.closed = true
+ print("txn: CLOSING NOSTRDB")
ndb_destroy(self.ndb.ndb)
+ print("txn: NOSTRDB CLOSED")
}
- func reopen() throws {
+ func reopen() -> Bool {
guard self.closed,
let db = Self.open(path: self.path, owns_db_file: self.owns_db) else {
- throw DatabaseError.failed_open
+ return false
}
self.closed = false
self.ndb = db
+ return true
}
func lookup_note_by_key_with_txn<Y>(_ key: NoteKey, txn: NdbTxn<Y>) -> NdbNote? {
diff --git a/nostrdb/NdbTxn.swift b/nostrdb/NdbTxn.swift
@@ -65,7 +65,7 @@ class NdbTxn<T> {
#if TXNDEBUG
txn_count -= 1;
- print("closing transaction \(txn_count)")
+ print("txn: closing transaction \(txn_count)")
#endif
ndb_end_query(&self.txn)
Thread.current.threadDictionary.removeObject(forKey: "ndb_txn")