cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox here.

Discuss Dropbox Developer & API

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

InterruptedIOException and NetworkIOException

InterruptedIOException and NetworkIOException

DannyW1
Explorer | Level 3

My app crashes randomly and I do not know what cause the error.   I'm using RxJava2 to get the file list.

Here is the crash log

 

Caused by: com.dropbox.core.NetworkIOException
        at com.dropbox.core.DbxRequestUtil.startPostRaw(DbxRequestUtil.java:284)
        at com.dropbox.core.v2.DbxRawClientV2$1.execute(DbxRawClientV2.java:146)
        at com.dropbox.core.v2.DbxRawClientV2.executeRetriable(DbxRawClientV2.java:330)
        at com.dropbox.core.v2.DbxRawClientV2.executeRetriableWithRefresh(DbxRawClientV2.java:351)
        at com.dropbox.core.v2.DbxRawClientV2.rpcStyle(DbxRawClientV2.java:137)
        at com.dropbox.core.v2.files.DbxUserFilesRequests.listFolder(DbxUserFilesRequests.java:2082)
        at com.dropbox.core.v2.files.DbxUserFilesRequests.listFolder(DbxUserFilesRequests.java:2132)
        at com.quirklogic.sdk.storage.dropbox.DropBoxFolder.lambda$list$0$DropBoxFolder(DropBoxFolder.java:109)
        at com.quirklogic.sdk.storage.dropbox.DropBoxFolder$$Lambda$0.call(Unknown Source)
        at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
        at io.reactivex.Single.subscribe(Single.java:3220) 
        at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34) 
        at io.reactivex.Single.subscribe(Single.java:3220) 
        at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) 
        at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:571) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
        at java.lang.Thread.run(Thread.java:818) 
     Caused by: java.io.InterruptedIOException
        at com.android.okio.Deadline.throwIfReached(Deadline.java:56)
        at com.android.okio.Okio$1.write(Okio.java:67)
        at com.android.okio.RealBufferedSink.flush(RealBufferedSink.java:154)
        at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:130)
        at com.android.okhttp.internal.http.HttpTransport.flushRequest(HttpTransport.java:73)
        at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:626)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:388)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:332)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:500)
        at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
        at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
        at com.dropbox.core.http.StandardHttpRequestor.toResponse(StandardHttpRequestor.java:50)
        at com.dropbox.core.http.StandardHttpRequestor.access$100(StandardHttpRequestor.java:29)
        at com.dropbox.core.http.StandardHttpRequestor$Uploader.finish(StandardHttpRequestor.java:186)
        at com.dropbox.core.DbxRequestUtil.startPostRaw(DbxRequestUtil.java:279)
        at com.dropbox.core.v2.DbxRawClientV2$1.execute(DbxRawClientV2.java:146) 
        at com.dropbox.core.v2.DbxRawClientV2.executeRetriable(DbxRawClientV2.java:330) 
        at com.dropbox.core.v2.DbxRawClientV2.executeRetriableWithRefresh(DbxRawClientV2.java:351) 
        at com.dropbox.core.v2.DbxRawClientV2.rpcStyle(DbxRawClientV2.java:137) 
        at com.dropbox.core.v2.files.DbxUserFilesRequests.listFolder(DbxUserFilesRequests.java:2082) 
        at com.dropbox.core.v2.files.DbxUserFilesRequests.listFolder(DbxUserFilesRequests.java:2132) 
        at com.quirklogic.sdk.storage.dropbox.DropBoxFolder.lambda$list$0$DropBoxFolder(DropBoxFolder.java:109) 
        at com.quirklogic.sdk.storage.dropbox.DropBoxFolder$$Lambda$0.call(Unknown Source) 
        at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44) 
        at io.reactivex.Single.subscribe(Single.java:3220) 
        at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34) 
        at io.reactivex.Single.subscribe(Single.java:3220) 
        at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) 
        at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:571) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) 
        at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
3 Replies 3

Greg-DB
Dropbox Staff

Based on the stack here, it looks like this is an issue reading data from the network. Do you know if there is any reason the network connection that the app is using may be getting disrupted? E.g., was the connection disconnected or interrupted, or might there be any software, such as a proxy, firewall, anti-virus, etc., that may be interfering? 

If this is random network unreliability, you may want to implement some more error handling/retrying, as that can be unpredictable.

DannyW1
Explorer | Level 3

Thanks Greg.  Internet connection is fine.  The error does not happen everytime.  It is just random.  It usually happens when I do alot of file list and get a file and repeat that process.

This happens on different devices too and on different wifi network.

 

Is there a way to trap the crash?

This is what i'm doing in RxJava2

 

            return Single.fromCallable(() -> DropBoxAuth.getInstance().getDbxClient().files().listFolder(query))
                    .map(result -> { ... }

The crash is inside fromCallable().  Could it be RxJava?

Greg-DB
Dropbox Staff

Can you elaborate on what you mean when you say you "do alot of file list"? How many API calls are you making at a time? If you're making a large number of calls, you may be overloading your system or network connection, in which case you should try reducing how many operations you run at a time, as that might be causing this.

Anyway, yes, the Dropbox SDK throws a 'NetworkIOException' when this occurs, so you can `catch` that exception type to handle these failures.

I can't provide insight or support for RxJava2 though, as that's made by a third party.

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    DannyW1 Explorer | Level 3
What do Dropbox user levels mean?