Describe the bug
After latest release, the following exception occurs on all downloads.
Exception:
00:30:49.871 [DefaultDispatcher-worker-4] ERROR suwayomi.tachidesk.server.ServerSetup -- unhandled exception java.lang.UnsupportedOperationException: null at java.base/java.util.concurrent.CopyOnWriteArrayList$COWIterator.remove(Unknown Source) at kotlin.collections.CollectionsKt__MutableCollectionsKt.filterInPlace$CollectionsKt__MutableCollectionsKt(MutableCollections.kt:225) at kotlin.collections.CollectionsKt__MutableCollectionsKt.removeAll(MutableCollections.kt:211) at suwayomi.tachidesk.manga.impl.download.DownloadManager.notifyAllClients(DownloadManager.kt:171) at suwayomi.tachidesk.manga.impl.download.DownloadManager.notifyAllClients$default(DownloadManager.kt:166) at suwayomi.tachidesk.manga.impl.download.DownloadManager.handleDownloadUpdate(DownloadManager.kt:91) at suwayomi.tachidesk.manga.impl.download.DownloadManager.access$handleDownloadUpdate(DownloadManager.kt:57) at suwayomi.tachidesk.manga.impl.download.DownloadManager$getDownloader$1$1.invoke(DownloadManager.kt:292) at suwayomi.tachidesk.manga.impl.download.DownloadManager$getDownloader$1$1.invoke(DownloadManager.kt:292) at suwayomi.tachidesk.manga.impl.download.Downloader.run(Downloader.kt:177) at suwayomi.tachidesk.manga.impl.download.Downloader.access$run(Downloader.kt:39) at suwayomi.tachidesk.manga.impl.download.Downloader$run$1.invokeSuspend(Downloader.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:829) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: null
To Reproduce
Steps to reproduce the behavior:
- Search any extension for a manga that has chapters to download
- attempt to download
- Receive an error (anywhere from 1-100% complete is displayed on the download)
Expected behavior
Users are able to download chapters
Device information (Server)
- Tachidesk version: v2.0.1848
- Server Operating System: Unraid
- Server Desktop Environment: N/A
- Server JVM version:
Device information (Client)
- Client version: r2643
- Client Type: webui
- Client Operating System: Docker
- Client Specifications: Chrome 138.0.7204.101
Additional context
even when you have 100% complete, no file is copied to the downloads directory.
(as seen here)

Describe the bug
After latest release, the following exception occurs on all downloads.
Exception:
00:30:49.871 [DefaultDispatcher-worker-4] ERROR suwayomi.tachidesk.server.ServerSetup -- unhandled exception java.lang.UnsupportedOperationException: null at java.base/java.util.concurrent.CopyOnWriteArrayList$COWIterator.remove(Unknown Source) at kotlin.collections.CollectionsKt__MutableCollectionsKt.filterInPlace$CollectionsKt__MutableCollectionsKt(MutableCollections.kt:225) at kotlin.collections.CollectionsKt__MutableCollectionsKt.removeAll(MutableCollections.kt:211) at suwayomi.tachidesk.manga.impl.download.DownloadManager.notifyAllClients(DownloadManager.kt:171) at suwayomi.tachidesk.manga.impl.download.DownloadManager.notifyAllClients$default(DownloadManager.kt:166) at suwayomi.tachidesk.manga.impl.download.DownloadManager.handleDownloadUpdate(DownloadManager.kt:91) at suwayomi.tachidesk.manga.impl.download.DownloadManager.access$handleDownloadUpdate(DownloadManager.kt:57) at suwayomi.tachidesk.manga.impl.download.DownloadManager$getDownloader$1$1.invoke(DownloadManager.kt:292) at suwayomi.tachidesk.manga.impl.download.DownloadManager$getDownloader$1$1.invoke(DownloadManager.kt:292) at suwayomi.tachidesk.manga.impl.download.Downloader.run(Downloader.kt:177) at suwayomi.tachidesk.manga.impl.download.Downloader.access$run(Downloader.kt:39) at suwayomi.tachidesk.manga.impl.download.Downloader$run$1.invokeSuspend(Downloader.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:586) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:829) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:717) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:704) Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: nullTo Reproduce
Steps to reproduce the behavior:
Expected behavior
Users are able to download chapters
Device information (Server)
Device information (Client)
Additional context

even when you have 100% complete, no file is copied to the downloads directory.
(as seen here)