plaidev / karte-android-sdk

KARTE SDK for Android
https://karte.io/
Apache License 2.0
5 stars 3 forks source link

[core] App rarely crashes with SQLite Lock #11

Closed wasnot closed 3 years ago

wasnot commented 3 years ago

Expected Behavior

App running without crash.

Current Behavior

App rarely crashes with SQLite Lock.(no reproduced)

Possible Solution

This issue has been fixed in core 2.11.0 https://developers.karte.io/docs/release-notes-android-sdk-v2#core-2110

Steps to Reproduce

We can not reproduce this problem on our environment.

SDK Version

This problem occurs if you are using core 2.10.0 or lower.

Context Details

Logs

Fatal Exception: android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode
       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(SQLiteConnection.java)
       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)
       at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:635)
       at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:321)
       at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:295)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:216)
       at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:194)
       at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:493)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:200)
       at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:192)
       at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:864)
       at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:849)
       at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:724)
       at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:714)
       at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:295)
       at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:238)
       at io.karte.android.utilities.datastore.DataStore$Companion.begin(DataStore.java:110)
       at io.karte.android.utilities.datastore.Transaction.<init>(Transaction.java:52)
       at io.karte.android.utilities.datastore.DataStore$Companion.transaction(DataStore.java:106)
       at io.karte.android.tracking.queue.Dispatcher.dequeue(Dispatcher.java:107)
       at io.karte.android.tracking.queue.Dispatcher.access$enqueue(Dispatcher.java:48)
       at io.karte.android.tracking.queue.Dispatcher$push$2.invoke(Dispatcher.java:79)
       at io.karte.android.tracking.queue.Dispatcher$push$2.invoke(Dispatcher.java:48)
       at io.karte.android.tracking.queue.DispatcherKt$sam$java_lang_Runnable$0.run(DispatcherKt.java:2)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:164)
       at android.os.HandlerThread.run(HandlerThread.java:65)

Possible Implementation