fuel icon indicating copy to clipboard operation
fuel copied to clipboard

Downloading crashes when network quality is bad

Open imknown opened this issue 6 years ago • 0 comments

Bug Report

Description

Download crash.

To Reproduce

This crash will occur when network quality is bad. The connecting timeout is very long.

fun downloadApk(
            url: String,
            fileName: String,
            progressCallback: ProgressCallback,
            success: (ByteArray) -> Unit,
            failure: (FuelError) -> Unit
        ) {
            url.httpDownload()
                .fileDestination { _, _ ->
                    clearFolder(MyApplication.getApkDir())
                    MyApplication.getApkDir().mkdirs()
                    File(MyApplication.getApkDir(), fileName)
                }
                .responseProgress(progressCallback)
                .awaitByteArrayResult().fold(success, failure)
        }

Environment

Development Machine

  • OS: [Windows 10]
  • IDE: [Android Studio 3.5.2]
  • Fuel version: [2.2.1]
  • Kotlin version: [1.3.61]

Smartphone or Emulator

  • Device: [Yeshen Emulator]
  • OS: [Android 5.1]

Additional context

11-29 20:38:48.469 3028-3039/net.imknown.android.forefrontinfo E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
    java.lang.Throwable: Explicit termination method 'close' not called
        at dalvik.system.CloseGuard.open(CloseGuard.java:184)
        at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:287)
        at com.android.okhttp.Connection.upgradeToTls(Connection.java:201)
        at com.android.okhttp.Connection.connect(Connection.java:155)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
        at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
        at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:25)
        at com.github.kittinunf.fuel.toolbox.HttpClient.sendRequest(HttpClient.kt:135)
        at com.github.kittinunf.fuel.toolbox.HttpClient.doRequest(HttpClient.kt:78)
        at com.github.kittinunf.fuel.toolbox.HttpClient.access$doRequest(HttpClient.kt:28)
        at com.github.kittinunf.fuel.toolbox.HttpClient.awaitRequest(HttpClient.kt:66)
        at com.github.kittinunf.fuel.core.requests.SuspendableRequest.executeRequest(SuspendableRequest.kt:21)
        at com.github.kittinunf.fuel.core.requests.SuspendableRequest.awaitResult(SuspendableRequest.kt:40)
        at com.github.kittinunf.fuel.core.DeserializableKt.awaitResult(Deserializable.kt:240)
        at net.imknown.android.forefrontinfo.GatewayApi$Companion$downloadApk$$inlined$awaitByteArrayResult$1.invokeSuspend(Coroutines.kt:43)
        at net.imknown.android.forefrontinfo.GatewayApi$Companion$downloadApk$$inlined$awaitByteArrayResult$1.invoke(Coroutines.kt)
        at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:156)
        at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
        at net.imknown.android.forefrontinfo.GatewayApi$Companion.downloadApk$app_debug(GatewayApi.kt:99)
        at net.imknown.android.forefrontinfo.ui.settings.SettingsFragment.downloadApk(SettingsFragment.kt:296)
        at net.imknown.android.forefrontinfo.ui.settings.SettingsFragment$showDownloadConfirmDialog$1$1$1.invokeSuspend(SettingsFragment.kt:258)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
11-29 20:38:48.469 3028-3039/? W/System.err: StrictMode VmPolicy violation with POLICY_DEATH; shutting down.
11-29 20:38:48.469 3028-3039/? I/Process: Sending signal. PID: 3028 SIG: 9

imknown avatar Nov 29 '19 12:11 imknown