From 7044142c5fb62cf0603616e66018be4f6758b359 Mon Sep 17 00:00:00 2001 From: fanyu Date: Thu, 23 Mar 2023 14:44:19 +0800 Subject: [PATCH 1/3] Fix incorrect statistical calculation --- Mixin/Service/Job/BackupJob.swift | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Mixin/Service/Job/BackupJob.swift b/Mixin/Service/Job/BackupJob.swift index 3572b792c0..06efaf3a5f 100644 --- a/Mixin/Service/Job/BackupJob.swift +++ b/Mixin/Service/Job/BackupJob.swift @@ -108,7 +108,6 @@ class BackupJob: BaseJob { return } - var uploadPaths: [String] = [] var backupPaths: [String] = [] monitors = SafeDictionary() totalFileSize = 0 @@ -125,24 +124,21 @@ class BackupJob: BaseJob { let localFileSize = FileManager.default.fileSize(localURL.path) let cloudExists = FileManager.default.fileExists(atPath: cloudURL.path) - if !cloudExists || FileManager.default.fileSize(cloudURL.path) != localFileSize { + if !cloudExists || FileManager.default.fileSize(cloudURL.path) != localFileSize || (!cloudURL.isUploaded && !cloudURL.isUploading) { backupPaths.append(filename) backupTotalSize += localFileSize - - uploadPaths.append(filename) - } else if cloudExists { - if cloudURL.isUploaded { - withoutUploadSize += localFileSize - } else { - uploadPaths.append(filename) - } + } + if cloudURL.isUploaded { + withoutUploadSize += localFileSize } totalFileSize += localFileSize } let databaseFileSize = getDatabaseFileSize() let databaseCloudURL = backupUrl.appendingPathComponent(backupDatabaseName) - let isBackupDatabase = !FileManager.default.fileExists(atPath: databaseCloudURL.path) || FileManager.default.fileSize(databaseCloudURL.path) != databaseFileSize + let isBackupDatabase = !FileManager.default.fileExists(atPath: databaseCloudURL.path) + || FileManager.default.fileSize(databaseCloudURL.path) != databaseFileSize + || (!databaseCloudURL.isUploaded && !databaseCloudURL.isUploading) if !isBackupDatabase { withoutUploadSize += databaseFileSize From 9baab1de33cce0290b13da28752c372d9abb7454 Mon Sep 17 00:00:00 2001 From: fanyu Date: Wed, 19 Apr 2023 16:06:12 +0800 Subject: [PATCH 2/3] Apply code style --- Mixin/Service/Job/BackupJob.swift | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/Mixin/Service/Job/BackupJob.swift b/Mixin/Service/Job/BackupJob.swift index 06efaf3a5f..389182ec2a 100644 --- a/Mixin/Service/Job/BackupJob.swift +++ b/Mixin/Service/Job/BackupJob.swift @@ -121,10 +121,14 @@ class BackupJob: BaseJob { for filename in localPaths { let localURL = AttachmentContainer.url.appendingPathComponent(filename) let cloudURL = backupUrl.appendingPathComponent(filename) - let localFileSize = FileManager.default.fileSize(localURL.path) let cloudExists = FileManager.default.fileExists(atPath: cloudURL.path) - - if !cloudExists || FileManager.default.fileSize(cloudURL.path) != localFileSize || (!cloudURL.isUploaded && !cloudURL.isUploading) { + let cloudFileSize = FileManager.default.fileSize(cloudURL.path) + let localFileSize = FileManager.default.fileSize(localURL.path) + let isFileUploading = cloudURL.isUploaded || cloudURL.isUploading + // 1. Cloud file doesn't exist. + // 2. Cloud file size is different from the local file size. + // 3. File has not been uploaded and is currently not uploading. + if !cloudExists || cloudFileSize != localFileSize || !isFileUploading { backupPaths.append(filename) backupTotalSize += localFileSize } @@ -134,15 +138,16 @@ class BackupJob: BaseJob { totalFileSize += localFileSize } - let databaseFileSize = getDatabaseFileSize() + let localDatabaseSize = getDatabaseFileSize() let databaseCloudURL = backupUrl.appendingPathComponent(backupDatabaseName) - let isBackupDatabase = !FileManager.default.fileExists(atPath: databaseCloudURL.path) - || FileManager.default.fileSize(databaseCloudURL.path) != databaseFileSize - || (!databaseCloudURL.isUploaded && !databaseCloudURL.isUploading) + let cloudDatabaseExists = FileManager.default.fileExists(atPath: databaseCloudURL.path) + let cloudDatabaseSize = FileManager.default.fileSize(databaseCloudURL.path) + let isDatabaseUploading = databaseCloudURL.isUploaded || databaseCloudURL.isUploading + let isBackupDatabase = !cloudDatabaseExists || cloudDatabaseSize != localDatabaseSize || !isDatabaseUploading if !isBackupDatabase { - withoutUploadSize += databaseFileSize - totalFileSize += databaseFileSize + withoutUploadSize += localDatabaseSize + totalFileSize += localDatabaseSize } guard isContinueBackup else { From 72f99cebf098de3231439a84d123b60acf1ac18f Mon Sep 17 00:00:00 2001 From: fanyu Date: Wed, 26 Apr 2023 13:19:54 +0800 Subject: [PATCH 3/3] Monitoring the file being uploaded --- Mixin/Service/Job/BackupJob.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Mixin/Service/Job/BackupJob.swift b/Mixin/Service/Job/BackupJob.swift index 389182ec2a..167deca2e3 100644 --- a/Mixin/Service/Job/BackupJob.swift +++ b/Mixin/Service/Job/BackupJob.swift @@ -132,6 +132,9 @@ class BackupJob: BaseJob { backupPaths.append(filename) backupTotalSize += localFileSize } + if cloudURL.isUploading { + monitors[cloudURL.lastPathComponent] = 0 + } if cloudURL.isUploaded { withoutUploadSize += localFileSize } @@ -149,6 +152,9 @@ class BackupJob: BaseJob { withoutUploadSize += localDatabaseSize totalFileSize += localDatabaseSize } + if databaseCloudURL.isUploading { + monitors[databaseCloudURL.lastPathComponent] = 0 + } guard isContinueBackup else { return