Skip to content

Commit 3afa05d

Browse files
committed
Add some more error logging
1 parent e475a08 commit 3afa05d

2 files changed

Lines changed: 24 additions & 7 deletions

File tree

controller-android/src/androidMain/kotlin/io/exoquery/controller/android/AndroidDatabaseController.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ import kotlin.coroutines.coroutineContext
1818
import kotlin.experimental.ExperimentalTypeInference
1919

2020
sealed interface WalMode {
21-
object Enabled: WalMode
21+
data object Enabled: WalMode
2222
/** A.k.a. The WAL "Compatibility" mode */
23-
object Default: WalMode
24-
object Disabled: WalMode
23+
data object Default: WalMode
24+
data object Disabled: WalMode
2525
}
2626

2727
object UnusedOpts {}

controller-android/src/androidMain/kotlin/io/exoquery/controller/android/AndroidMixIns.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,31 @@ interface HasTransactionalityAndroid: RequiresTransactionality<Connection, Suppo
8989
session.value.session.beginTransaction()
9090
}
9191
}
92-
val result = withContext(transaction) { block() }
92+
val result =
93+
try {
94+
withContext(transaction) { block() }
95+
} catch (e: IllegalStateException) {
96+
throw IllegalStateException("Error executing block in transaction (wal-mode: ${walMode})", e)
97+
}
9398
// setting it successful makes it not rollback
94-
session.value.session.setTransactionSuccessful()
95-
session.value.session.endTransaction()
99+
try {
100+
session.value.session.setTransactionSuccessful()
101+
} catch (e: IllegalStateException) {
102+
throw IllegalStateException("Error marking transaction successful (wal-mode: ${walMode})", e)
103+
}
104+
try {
105+
session.value.session.endTransaction()
106+
} catch (e: IllegalStateException) {
107+
throw IllegalStateException("Error ending transaction after success (wal-mode: ${walMode})", e)
108+
}
96109
return result
97110
} catch (ex: Throwable) {
98111
if (session.value.session.inTransaction()) {
99-
session.value.session.endTransaction()
112+
try {
113+
session.value.session.endTransaction()
114+
} catch (e: IllegalStateException) {
115+
throw IllegalStateException("Error ending transaction after failure (wal-mode: ${walMode})", e)
116+
}
100117
}
101118
throw ex
102119
} finally {

0 commit comments

Comments
 (0)