Skip to content

chore: Disable Sentry SQLite integration - #702

Merged
tevincent merged 1 commit into
mainfrom
disable-sentry-database-integration
Oct 6, 2026
Merged

tevincent merged 1 commit into
mainfrom
disable-sentry-database-integration

Conversation

@LouisCAD

@LouisCAD LouisCAD commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

It was causing crashes with this kind of stacktrace:

Failed to acquire a lock on the database connection. A previous statement was prepared and not released.
at androidx.sqlite.driver.bundled.BundledSQLiteConnection.prepare(null:22)
at io.sentry.sqlite.SentrySQLiteConnection.prepare(SentrySQLiteConnection.kt:12)
at androidx.room.coroutines.ConnectionWithLock$PreparedStatementCache.create(ConnectionPoolImpl.kt:382)
at androidx.room.coroutines.ConnectionWithLock$PreparedStatementCache.create(ConnectionPoolImpl.kt:378)
at androidx.collection.LruCache.get(LruCache.kt:113)
at androidx.room.coroutines.ConnectionWithLock.prepare(ConnectionPoolImpl.kt:333)
at com.infomaniak.multiplatform_swisstransfer.database.dao.TransferDao_Impl.accountTransfersCountFlow$lambda$8(TransferDao_Impl.kt:642)
at com.infomaniak.multiplatform_swisstransfer.database.dao.TransferDao_Impl$$ExternalSyntheticLambda6.invoke(D8$$SyntheticClass:0)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$lambda$1$$inlined$internalPerform$1.invokeSuspend(DBUtil.kt:173)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$lambda$1$$inlined$internalPerform$1.invoke(null:8)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$lambda$1$$inlined$internalPerform$1.invoke(null:4)
at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159)
at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(null:8)
at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(null:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497)
at kotlinx.coroutines.BuildersKt.withContext(null:1)
at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159)
at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.android.kt:138)
at androidx.room.RoomDatabase.useConnection(RoomDatabase.android.kt:620)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$$inlined$compatCoroutineExecute$DBUtil__DBUtil_androidKt$1.invokeSuspend(DBUtil.android.kt:261)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)

It was causing crashes with this kind of stacktrace:

Failed to acquire a lock on the database connection. A previous statement was prepared and not released.
at androidx.sqlite.driver.bundled.BundledSQLiteConnection.prepare(null:22)
at io.sentry.sqlite.SentrySQLiteConnection.prepare(SentrySQLiteConnection.kt:12)
at androidx.room.coroutines.ConnectionWithLock$PreparedStatementCache.create(ConnectionPoolImpl.kt:382)
at androidx.room.coroutines.ConnectionWithLock$PreparedStatementCache.create(ConnectionPoolImpl.kt:378)
at androidx.collection.LruCache.get(LruCache.kt:113)
at androidx.room.coroutines.ConnectionWithLock.prepare(ConnectionPoolImpl.kt:333)
at com.infomaniak.multiplatform_swisstransfer.database.dao.TransferDao_Impl.accountTransfersCountFlow$lambda$8(TransferDao_Impl.kt:642)
at com.infomaniak.multiplatform_swisstransfer.database.dao.TransferDao_Impl$$ExternalSyntheticLambda6.invoke(D8$$SyntheticClass:0)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$lambda$1$$inlined$internalPerform$1.invokeSuspend(DBUtil.kt:173)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$lambda$1$$inlined$internalPerform$1.invoke(null:8)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$lambda$1$$inlined$internalPerform$1.invoke(null:4)
at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invokeSuspend(ConnectionPoolImpl.kt:159)
at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(null:8)
at androidx.room.coroutines.ConnectionPoolImpl$useConnection$4.invoke(null:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatched(Undispatched.kt:66)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:43)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:497)
at kotlinx.coroutines.BuildersKt.withContext(null:1)
at androidx.room.coroutines.ConnectionPoolImpl.useConnection(ConnectionPoolImpl.kt:159)
at androidx.room.RoomConnectionManager.useConnection(RoomConnectionManager.android.kt:138)
at androidx.room.RoomDatabase.useConnection(RoomDatabase.android.kt:620)
at androidx.room.util.DBUtil__DBUtil_androidKt$performSuspending$$inlined$compatCoroutineExecute$DBUtil__DBUtil_androidKt$1.invokeSuspend(DBUtil.android.kt:261)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:124)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:89)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:798)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704)
Copilot AI balanced review requested due to automatic review settings October 5, 2026 15:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The focused configuration change directly addresses the reported Sentry SQLite conflict without disabling unrelated instrumentation.

Review effort: Balanced
Findings: None

What changed in this PR

Disables Sentry database instrumentation to prevent Room SQLite prepared-statement locking crashes.

Changes:

  • Excludes InstrumentationFeature.DATABASE while retaining other Sentry instrumentation.
  • Documents the Room compatibility issue.
File Description
app/​build.gradle.kts Configures Sentry tracing instrumentation to exclude database instrumentation.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@sonarqubecloud

sonarqubecloud Bot commented Oct 5, 2026

Copy link
Copy Markdown

@tevincent
tevincent merged commit c19ae03 into main Oct 6, 2026
15 checks passed
@tevincent
tevincent deleted the disable-sentry-database-integration branch October 6, 2026 07:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants