pantasystem / Milktea

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

タイムラインのストリーミングが停止してしまう不具合 #588

Closed pantasystem closed 2 years ago

pantasystem commented 2 years ago

しばらくタイムラインを開いているとタイムラインのストリーミングが停止してしまう。

pantasystem commented 2 years ago
W/TimelineViewModel: ストリーミング受信中にエラー発生
    java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextNode(HashMap.java:1441)
        at java.util.HashMap$EntryIterator.next(HashMap.java:1475)
        at java.util.HashMap$EntryIterator.next(HashMap.java:1473)
        at java.util.HashMap.putMapEntries(HashMap.java:511)
        at java.util.LinkedHashMap.<init>(LinkedHashMap.java:408)
        at kotlin.collections.MapsKt__MapsKt.toMutableMap(Maps.kt:612)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource._init_$lambda-1(InMemoryNoteDataSource.kt:38)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource.$r8$lambda$CxnibKNiYlRMGqoFxsdJgNEirhw(Unknown Source:0)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource$$ExternalSyntheticLambda0.on(Unknown Source:2)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource$publish$1.invokeSuspend(InMemoryNoteDataSource.kt:146)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:279)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource.publish(InMemoryNoteDataSource.kt:143)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource.add(InMemoryNoteDataSource.kt:75)
        at net.pantasystem.milktea.data.infrastructure.notes.impl.InMemoryNoteDataSource.addAll(InMemoryNoteDataSource.kt:84)
        at net.pantasystem.milktea.data.infrastructure.notes.NoteDataSourceAdder.addNoteDtoToDataSource(NoteDataSourceAdder.kt:25)
        at net.pantasystem.milktea.data.infrastructure.notes.NoteStreamingImpl$connect$$inlined$map$2$2.emit(Emitters.kt:224)
        at kotlinx.coroutines.flow.FlowKt__TransformKt$filterNotNull$$inlined$unsafeTransform$1$2.emit(Emitters.kt:223)
        at net.pantasystem.milktea.data.infrastructure.notes.NoteStreamingImpl$connect$$inlined$map$1$2.emit(Emitters.kt:224)
        at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:62)
        at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl$FlowKt__ChannelsKt(Channels.kt:1)
        at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Unknown Source:14)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
D/SocketImpl: メッセージ送信: ping, statenet.pantasystem.milktea.data.streaming.Socket$State$Connected@91e760e