pantasystem / Milktea

Misskey, MastodonのAndroidクライアント「Milktea」のソースコード
GNU General Public License v3.0
251 stars 22 forks source link

グループメッセージを受信/送信するとクラッシュする #736

Closed pantasystem closed 2 years ago

pantasystem commented 2 years ago

概要

グループメッセージで送信、受信を行うとクラッシュする GroupDataSource周りの実装に問題がある。

pantasystem commented 2 years ago

エラー内容

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: jp.panta.misskeyandroidclient, PID: 8580
    android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: group_member_v1.groupId, group_member_v1.userId (code 2067 SQLITE_CONSTRAINT_UNIQUE)
        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:938)
        at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:790)
        at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:88)
        at androidx.sqlite.db.framework.FrameworkSQLiteStatement.executeInsert(FrameworkSQLiteStatement.java:51)
        at androidx.room.EntityInsertionAdapter.insertAndReturnIdsList(EntityInsertionAdapter.java:243)
        at net.pantasystem.milktea.data.infrastructure.group.GroupDao_Impl$10.call(GroupDao_Impl.java:210)
        at net.pantasystem.milktea.data.infrastructure.group.GroupDao_Impl$10.call(GroupDao_Impl.java:205)
        at androidx.room.CoroutinesRoom$Companion$execute$2.invokeSuspend(CoroutinesRoom.kt:65)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at androidx.room.TransactionExecutor$1.run(TransactionExecutor.java:47)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:923)
        Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@468e5a0, Dispatchers.Main]