Skip to content

Commit f0fbddd

Browse files
committed
Do not start Downloaders for failed downloads
In case there were failed chapter downloads in the queue the DownloadManager still created an Downloader and started it. This Downloader would than immediately call "onComplete", since there is no available download, which then would refresh the Downloaders again which created an infinite loop until the failed download got removed from the queue
1 parent 0478657 commit f0fbddd

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

server/src/main/kotlin/suwayomi/tachidesk/manga/impl/download/DownloadManager.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ import org.jetbrains.exposed.sql.select
2828
import org.jetbrains.exposed.sql.transactions.transaction
2929
import suwayomi.tachidesk.graphql.subscriptions.downloadSubscriptionSource
3030
import suwayomi.tachidesk.manga.impl.download.model.DownloadChapter
31+
import suwayomi.tachidesk.manga.impl.download.model.DownloadState
3132
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Downloading
33+
import suwayomi.tachidesk.manga.impl.download.model.DownloadState.Error
3234
import suwayomi.tachidesk.manga.impl.download.model.DownloadStatus
3335
import suwayomi.tachidesk.manga.impl.download.model.Status
3436
import suwayomi.tachidesk.manga.model.dataclass.ChapterDataClass
@@ -150,9 +152,12 @@ object DownloadManager {
150152
scope.launch {
151153
downloaderWatch.sample(1.seconds).collect {
152154
val runningDownloaders = downloaders.values.filter { it.isActive }
153-
logger.info { "Running: ${runningDownloaders.size}, Queued: ${downloadQueue.size}" }
155+
val availableDownloads = downloadQueue.filter { it.state != Error }
156+
157+
logger.info { "Running: ${runningDownloaders.size}, Queued: ${downloadQueue.size}, Failed: ${downloadQueue.size - availableDownloads.size}" }
158+
154159
if (runningDownloaders.size < MAX_SOURCES_IN_PARAllEL) {
155-
downloadQueue.asSequence()
160+
availableDownloads.asSequence()
156161
.map { it.manga.sourceId }
157162
.distinct()
158163
.minus(

0 commit comments

Comments
 (0)