Skip to content

Conversation

alperozturk96
Copy link
Collaborator

@alperozturk96 alperozturk96 commented Oct 8, 2025

  • Tests written, or not not needed

Issue

When the internet connection is slow or the server responds slowly, the search task may fail, but the file list incorrectly displays as "No files here," giving users a misleading impression that no files exist.

D  Method has been aborted
java.lang.IllegalStateException: Method has been aborted
    at org.apache.commons.httpclient.HttpMethodBase.checkExecuteConditions(HttpMethodBase.java:1055)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1085)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
    at com.owncloud.android.lib.common.OwnCloudClient.executeMethod(OwnCloudClient.java:192)
    at com.owncloud.android.lib.common.OwnCloudClient.executeMethod(OwnCloudClient.java:155)
    at com.owncloud.android.datamodel.ThumbnailsCacheManager$ThumbnailGenerationTask.doThumbnailFromOCFileInBackground(ThumbnailsCacheManager.java:800)
    at com.owncloud.android.datamodel.ThumbnailsCacheManager$ThumbnailGenerationTask.doInBackground(ThumbnailsCacheManager.java:651)
    at com.owncloud.android.datamodel.ThumbnailsCacheManager$ThumbnailGenerationTask.doInBackground(ThumbnailsCacheManager.java:572)
    at android.os.AsyncTask$3.call(AsyncTask.java:394)
    at java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
    at java.lang.Thread.run(Thread.java:1119)
E  Exception while getting remote shares
java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:118)
    at java.net.SocketInputStream.read(SocketInputStream.java:173)
    at java.net.SocketInputStream.read(SocketInputStream.java:143)
    at org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:920)
    at org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:884)
    at org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable(ConscryptEngineSocket.java:799)
    at org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:772)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:277)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:338)
    at org.apache.commons.httpclient.ChunkedInputStream.read(ChunkedInputStream.java:182)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:108)
    at java.io.FilterInputStream.read(FilterInputStream.java:107)
    at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:127)
    at org.apache.commons.httpclient.HttpMethodBase.getResponseBody(HttpMethodBase.java:690)
    at org.apache.commons.httpclient.HttpMethodBase.getResponseBodyAsString(HttpMethodBase.java:803)
    at com.owncloud.android.lib.resources.shares.GetSharesRemoteOperation.run(GetSharesRemoteOperation.java:62)
    at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:132)
    at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:141)
    at com.owncloud.android.ui.fragment.OCFileListSearchAsyncTask.doInBackground(OCFileListSearchAsyncTask.kt:53)
    at com.owncloud.android.ui.fragment.OCFileListSearchAsyncTask.doInBackground(OCFileListSearchAsyncTask.kt:21)
    at android.os.AsyncTask$3.call(AsyncTask.java:394)
    at java.util.concurrent.FutureTask.run(FutureTask.java:317)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
    at java.lang.Thread.run(Thread.java:1119)

How to reproduce?

  1. Set the device’s internet connection to EDGE (or other low-speed networks).
  2. Attempt to fetch shared files.

Changes

New empty list state: Added a dedicated state to accurately reflect the current status of the screen.

Image 1

Replaces AsyncTask with Coroutines for better and easy state management.

Increases session timeout

Fixes since OCFileListSearchTask triggers showFederatedShareAvatar:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
    at com.owncloud.android.ui.AvatarGroupLayout.showFederatedShareAvatar(AvatarGroupLayout.kt:144)
    at com.owncloud.android.ui.AvatarGroupLayout.setAvatars(AvatarGroupLayout.kt:98)
    at com.owncloud.android.ui.adapter.OCFileListAdapter.bindListItemViewHolder(OCFileListAdapter.java:642)
    at com.owncloud.android.ui.adapter.OCFileListAdapter.bindHolder(OCFileListAdapter.java:486)
    at com.owncloud.android.ui.adapter.OCFileListAdapter.onBindViewHolder(OCFileListAdapter.java:473)

Library PR: nextcloud/android-library#1857

@alperozturk96 alperozturk96 changed the title Fix/handle slow internet connection better for fetching shares fix: handle slow internet connection better for fetching shares Oct 8, 2025
@alperozturk96
Copy link
Collaborator Author

@tobiasKaminsky I’m unable to fetch shares from the /ocs/v2.php/apps/files_sharing/api/v1/shares endpoint over EDGE within 2 minutes. Do you have any other ideas to speed this up?

kra-mo

This comment was marked as resolved.

@alperozturk96 alperozturk96 force-pushed the fix/handle-slow-internet-connection-better-for-fetching-shares branch from d75ad64 to 83b48f2 Compare October 16, 2025 12:35
@alperozturk96 alperozturk96 requested a review from kra-mo October 16, 2025 12:37
Signed-off-by: alperozturk <[email protected]>

# Conflicts:
#	build.gradle
Signed-off-by: alperozturk <[email protected]>
Signed-off-by: alperozturk <[email protected]>
Signed-off-by: alperozturk <[email protected]>
Signed-off-by: alperozturk <[email protected]>
Signed-off-by: alperozturk <[email protected]>
@alperozturk96 alperozturk96 force-pushed the fix/handle-slow-internet-connection-better-for-fetching-shares branch from 83b48f2 to 076b7e1 Compare October 20, 2025 08:33
@nextcloud nextcloud deleted a comment from github-actions bot Oct 20, 2025
Copy link

APK file: https://www.kaminsky.me/nc-dev/android-artifacts/15756.apk

qrcode

To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants