[Bug] http error 520 in reader and downloader
Closed this issue · 2 comments
Device information
- Suwayomi-Server version: v1.1.1-r1599-docker
- Server Operating System: docker
- Server Desktop Environment: N/A
- Server JVM version: bundled
- Client Operating System: bundled
- Client Web Browser: newest chrome stable
Steps to reproduce
- Read a manga from toonily (found this bug on this extension, but read on discord that there are also other extensions)
- After some time of reading (constant, without brakes, like reading many chapter concurrently) next chapters don't read
- If downloading after downloading several chapters, other not downloaded chapter will show up an error)
Expected behavior
Chapters download normally/ Chapters loads in reader normally
Actual behavior
Error 520
Other details
Tested it in tachimanga app on iOS and the problem didn't show up even after downloading 31 chapters at once( 1 concurrent download)
Download log:
`23:46:42.575 [DefaultDispatcher-worker-3] WARN suwayomi.tachidesk.manga.impl.download.Downloader source(5190569675461947007) - downloadChapter(Share Girlfriend (4983) - Chapter 50 - The End (31163) | state= Error, tries= 2, progress= 0.0)) -- failed due to
eu.kanade.tachiyomi.network.HttpException: HTTP error 520
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservableSuccess$lambda$1(OkHttpExtensions.kt:66)
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservableSuccess$lambda$2(OkHttpExtensions.kt:63)
at rx.internal.util.ActionObserver.onNext(ActionObserver.java:39)
at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:96)
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt$asObservable$1$requestArbiter$1.request(OkHttpExtensions.kt:39)
at rx.Subscriber.setProducer(Subscriber.java:211)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
at rx.Subscriber.setProducer(Subscriber.java:205)
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservable$lambda$0(OkHttpExtensions.kt:57)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.subscribe(Observable.java:10423)
at rx.Observable.subscribe(Observable.java:10390)
at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitOne(RxCoroutineBridge.kt:28)
at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitSingle(RxCoroutineBridge.kt:22)
at eu.kanade.tachiyomi.source.online.HttpSource.getPageList$suspendImpl(HttpSource.kt:306)
at eu.kanade.tachiyomi.source.online.HttpSource.getPageList(HttpSource.kt)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownload.fetchPageList(ChapterForDownload.kt:116)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownload.asDownloadReady(ChapterForDownload.kt:73)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownloadKt.getChapterDownloadReady(ChapterForDownload.kt:37)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownloadKt.getChapterDownloadReady$default(ChapterForDownload.kt:30)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownloadKt.getChapterDownloadReadyByIndex(ChapterForDownload.kt:45)
at suwayomi.tachidesk.manga.impl.download.Downloader.run(Downloader.kt:127)
at suwayomi.tachidesk.manga.impl.download.Downloader.access$run(Downloader.kt:33)
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:104)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: okhttp3.Response.class
at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:118)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:188)
at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:98)
... 33 common frames omitted`
Reader log:
`23:57:25.922 [DefaultDispatcher-worker-12] ERROR suwayomi.tachidesk.graphql.AsDataFetcherResult -- asDataFetcherResult: failed due to
eu.kanade.tachiyomi.network.HttpException: HTTP error 520
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservableSuccess$lambda$1(OkHttpExtensions.kt:66)
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservableSuccess$lambda$2(OkHttpExtensions.kt:63)
at rx.internal.util.ActionObserver.onNext(ActionObserver.java:39)
at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:96)
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt$asObservable$1$requestArbiter$1.request(OkHttpExtensions.kt:39)
at rx.Subscriber.setProducer(Subscriber.java:211)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
at rx.Subscriber.setProducer(Subscriber.java:205)
at eu.kanade.tachiyomi.network.OkHttpExtensionsKt.asObservable$lambda$0(OkHttpExtensions.kt:57)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.subscribe(Observable.java:10423)
at rx.Observable.subscribe(Observable.java:10390)
at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitOne(RxCoroutineBridge.kt:28)
at suwayomi.tachidesk.manga.impl.util.lang.RxCoroutineBridgeKt.awaitSingle(RxCoroutineBridge.kt:22)
at eu.kanade.tachiyomi.source.online.HttpSource.getPageList$suspendImpl(HttpSource.kt:306)
at eu.kanade.tachiyomi.source.online.HttpSource.getPageList(HttpSource.kt)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownload.fetchPageList(ChapterForDownload.kt:116)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownload.asDownloadReady(ChapterForDownload.kt:73)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownloadKt.getChapterDownloadReady(ChapterForDownload.kt:37)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownloadKt.getChapterDownloadReady$default(ChapterForDownload.kt:30)
at suwayomi.tachidesk.manga.impl.chapter.ChapterForDownloadKt.getChapterDownloadReadyById(ChapterForDownload.kt:40)
at suwayomi.tachidesk.graphql.mutations.ChapterMutation$fetchChapterPages$1.invokeSuspend(ChapterMutation.kt:240)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: okhttp3.Response.class
at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:118)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:188)
at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:98)
... 33 common frames omitted`
This is likely cloudflare blocking the source. Setup Flaresolverr to try to bypass it
I have Flaresolverr enabled and it doesn't react to error 520 or Suwayomi doesn't send the request to Flaresolverr, because flaresolverr works fine - tested on Sonarr and Radarr and they have a correct reaction.
How to check if Suwayomi has correct connection to flaresolverr?