BitPage

Mobile

iOS and SwiftUI, Android and Kotlin, Apollo GraphQL. Live client-server integrations, on-device storage, server-driven UI, debugging the network layer.

1 article

Room 3 froze on a suspending @Transaction: the SQLite driver you pass picks your connection pool

Room 3 reads hasConnectionPool off the driver you hand setDriver(). AndroidSQLiteDriver returns true, so Room installs a passthrough pool holding exactly one thread-confined connection, and a suspending @Transaction can block there with no crash, no ANR and nothing in logcat. BundledSQLiteDriver returns false, so Room runs its own pool of four readers and one writer, and resets PRAGMA synchronous on every connection it opens.