debug: add some transaction debugging

This commit is contained in:
William Casarin
2024-01-26 10:50:58 -08:00
parent 010d71d9ed
commit 6e0ba3206d
4 changed files with 16 additions and 8 deletions

View File

@@ -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

View File

@@ -94,6 +94,7 @@ struct DamusState: HeadlessDamusState {
}
func close() {
print("txn: damus close")
pool.close()
ndb.close()
}

View File

@@ -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? {

View File

@@ -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")