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. (Please check icon and text) @kra-mo I added these for testing purposes quickly, it's not final. I will replace after your feedback.

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

Signed-off-by: alperozturk <alper_ozturk@proton.me>
Signed-off-by: alperozturk <alper_ozturk@proton.me>
Signed-off-by: alperozturk <alper_ozturk@proton.me>
Signed-off-by: alperozturk <alper_ozturk@proton.me>
@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
Signed-off-by: alperozturk <alper_ozturk@proton.me>
@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?

Signed-off-by: alperozturk <alper_ozturk@proton.me>
Copy link

github-actions bot commented Oct 8, 2025

test-Unit test failed, but no output was generated. Maybe a preliminary stage failed.

Copy link

github-actions bot commented Oct 8, 2025

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.

Copy link

github-actions bot commented Oct 8, 2025

Codacy

Lint

TypemasterPR
Warnings4546
Errors1111

SpotBugs

CategoryBaseNew
Bad practice4646
Correctness7474
Dodgy code267267
Experimental11
Internationalization77
Malicious code vulnerability22
Multithreaded correctness3535
Performance4949
Security1818
Total499499

Lint increased!

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.

1 participant