[Problem/Question]
Recently, I upgraded the sendbird-uikit-sdk version to v3.23.0
. However, after upgrading the version of sendbird-uikit, the application is crashing for some users after launching FeedNotificationChannelActivity.
[UIKit Version]
v3.23.0
[Reproduction Steps]
Fatal Exception: java.util.ConcurrentModificationException:
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1212)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1266)
at java.util.AbstractCollection.toArray(AbstractCollection.java:141)
at java.util.ArrayList.<init>(ArrayList.java:191)
at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1335)
at com.sendbird.uikit.model.MessageList.toList(MessageList.kt:49)
at com.sendbird.uikit.vm.FeedNotificationChannelViewModel.notifyDataSetChanged(FeedNotificationChannelViewModel.java:324)
at com.sendbird.uikit.vm.FeedNotificationChannelViewModel.notifyDataSetChanged(FeedNotificationChannelViewModel.java:310)
at com.sendbird.uikit.vm.FeedNotificationChannelViewModel$2.onMessagesUpdated(FeedNotificationChannelViewModel.java:392)
at com.sendbird.uikit.vm.FeedNotificationChannelViewModel$2.onMessagesUpdated(FeedNotificationChannelViewModel.java:369)
at com.sendbird.android.collection.BaseMessageCollection$notifyMessagesUpdated$1.invoke(BaseMessageCollection.kt:770)
at com.sendbird.android.collection.BaseMessageCollection$notifyMessagesUpdated$1.invoke(BaseMessageCollection.kt:757)
at com.sendbird.android.internal.utils.ConstantsKt.runOnThreadOption$lambda-0(Constants.kt:20)
at com.sendbird.android.internal.main.Options$runOnThreadOption$1.invoke(Options.kt:49)
at com.sendbird.android.internal.main.Options$runOnThreadOption$1.invoke(Options.kt:49)
at com.sendbird.android.auth.internal.utils.AuthConstantsKt.runOnUiThread$lambda-0(AuthConstants.kt:30)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:268)
at android.app.ActivityThread.main(ActivityThread.java:8017)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:627)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)
at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
at java.lang.Thread.getStackTrace(Thread.java:1736)
at com.sendbird.android.internal.utils.ConstantsKt.runOnThreadOption(Constants.kt:14)
at com.sendbird.android.collection.BaseMessageCollection.notifyMessagesUpdated(BaseMessageCollection.kt:757)
at com.sendbird.android.collection.BaseMessageCollection.notifyMessagesUpdated$default(BaseMessageCollection.kt:740)
at com.sendbird.android.collection.NotificationCollection.updateAllNotificationMessageStatusBefore(NotificationCollection.kt:150)
at com.sendbird.android.collection.NotificationCollection.access$updateAllNotificationMessageStatus(NotificationCollection.kt:33)
at com.sendbird.android.collection.NotificationCollection.access$updateAllNotificationMessageStatusBefore(NotificationCollection.kt:33)
at com.sendbird.android.collection.NotificationCollection$registerEventHandler$1.onMyLastReadUpdated(NotificationCollection.kt:112)
at com.sendbird.android.internal.channel.ChannelManager$handleMyLastReadUpdated$1.invoke(ChannelManager.kt:606)
at com.sendbird.android.internal.channel.ChannelManager$handleMyLastReadUpdated$1.invoke(ChannelManager.kt:606)
at com.sendbird.android.internal.utils.ThreadOptionBroadcaster.broadcast(ThreadOptionBroadcaster.kt:15)
at com.sendbird.android.internal.channel.ChannelManager.broadcastFeedInternal$sendbird_release(ChannelManager.kt:1069)
at com.sendbird.android.internal.channel.ChannelManager.handleMyLastReadUpdated$sendbird_release(ChannelManager.kt:606)
at com.sendbird.android.channel.FeedChannel.notifyMyLastReadUpdated(FeedChannel.kt:180)
at com.sendbird.android.channel.FeedChannel.markAsRead$lambda-7(FeedChannel.kt:224)
at com.sendbird.android.auth.network.RequestQueueImpl.send$lambda-7(RequestQueueImpl.kt:196)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
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)
[Frequency]
Although not a common occurrence, this particular case is experiencing a crash.
[Current impact]
Users are unable to access FeedNotificationChannelActivity, which currently displays the entire notification feed on this screen.