From 57e11f858d8183679f9093d8863c761dd2429680 Mon Sep 17 00:00:00 2001 From: Jonas Mayer Date: Thu, 18 Apr 2024 12:50:22 +0200 Subject: [PATCH 1/3] Make retry filed uploads not restart worker for every file Signed-off-by: Jonas Mayer --- .../client/jobs/upload/FileUploadHelper.kt | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index 1b5f1c86675b..a95c531788ac 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -119,12 +119,25 @@ class FileUploadHelper { val batteryStatus = powerManagementService.battery val charging = batteryStatus.isCharging || batteryStatus.isFull val isPowerSaving = powerManagementService.isPowerSavingEnabled - var uploadUser = Optional.empty() + + val uploadUsers = mutableListOf() for (failedUpload in failedUploads) { // 1. extract failed upload owner account and cache it between loops (expensive query) - if (!uploadUser.isPresent || !uploadUser.get().nameEquals(failedUpload.accountName)) { - uploadUser = accountManager.getUser(failedUpload.accountName) + var correspondingUploadUser = uploadUsers.stream().filter { uploadUser -> + uploadUser.nameEquals( + failedUpload.accountName + ) + }.findFirst() + + if (!correspondingUploadUser.isPresent) { + correspondingUploadUser = accountManager.getUser(failedUpload.accountName) + if (!correspondingUploadUser.isPresent) { + uploadsStorageManager.removeUpload(failedUpload) + continue + } + uploadUsers.add(correspondingUploadUser.get()) } + val isDeleted = !File(failedUpload.localPath).exists() if (isDeleted) { showNotExistMessage = true @@ -138,10 +151,15 @@ class FileUploadHelper { canUploadBeRetried(failedUpload, gotWifi, charging) && !connectivityService.isInternetWalled ) { // 2B. for existing local files, try restarting it if possible - retryUpload(failedUpload, uploadUser.get()) + failedUpload.uploadStatus = UploadStatus.UPLOAD_IN_PROGRESS + uploadsStorageManager.updateUpload(failedUpload) } } + uploadUsers.forEach { + backgroundJobManager.startFilesUploadJob(it) + } + return showNotExistMessage } From 77a1eade9b4cefa1df16b82a6d67b6324d93fb08 Mon Sep 17 00:00:00 2001 From: Jonas Mayer Date: Thu, 18 Apr 2024 13:53:30 +0200 Subject: [PATCH 2/3] Simplify function and remove nested loop Signed-off-by: Jonas Mayer --- .../client/jobs/upload/FileUploadHelper.kt | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index a95c531788ac..015116a219bc 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -120,23 +120,7 @@ class FileUploadHelper { val charging = batteryStatus.isCharging || batteryStatus.isFull val isPowerSaving = powerManagementService.isPowerSavingEnabled - val uploadUsers = mutableListOf() for (failedUpload in failedUploads) { - // 1. extract failed upload owner account and cache it between loops (expensive query) - var correspondingUploadUser = uploadUsers.stream().filter { uploadUser -> - uploadUser.nameEquals( - failedUpload.accountName - ) - }.findFirst() - - if (!correspondingUploadUser.isPresent) { - correspondingUploadUser = accountManager.getUser(failedUpload.accountName) - if (!correspondingUploadUser.isPresent) { - uploadsStorageManager.removeUpload(failedUpload) - continue - } - uploadUsers.add(correspondingUploadUser.get()) - } val isDeleted = !File(failedUpload.localPath).exists() if (isDeleted) { @@ -156,8 +140,9 @@ class FileUploadHelper { } } - uploadUsers.forEach { - backgroundJobManager.startFilesUploadJob(it) + accountManager.accounts.forEach { + val user = accountManager.getUser(it.name) + if (user.isPresent) backgroundJobManager.startFilesUploadJob(user.get()) } return showNotExistMessage From b2b6a297a77b93d77b4295ec78db34e0e32be6b4 Mon Sep 17 00:00:00 2001 From: Jonas Mayer Date: Tue, 30 Apr 2024 15:02:01 +0200 Subject: [PATCH 3/3] fix spotless Signed-off-by: Jonas Mayer --- .../java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index c9cf63cf17d9..878d3fa9248a 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -123,9 +123,7 @@ class FileUploadHelper { val isPowerSaving = powerManagementService.isPowerSavingEnabled var uploadUser = Optional.empty() - for (failedUpload in failedUploads) { - val isDeleted = !File(failedUpload.localPath).exists() if (isDeleted) { showNotExistMessage = true