From 609f463b11b18e675ab578aa6872c527285383a9 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 23 Sep 2021 17:29:21 +0200 Subject: [PATCH] Don't try to clear data of NO_DATA system apps This speeds up the backup quite a bit since there's many such apps --- .../seedvault/transport/backup/BackupCoordinator.kt | 8 ++++---- .../stevesoltys/seedvault/transport/backup/FullBackup.kt | 4 ++-- .../seedvault/transport/backup/BackupCoordinatorTest.kt | 4 ++-- .../seedvault/transport/backup/FullBackupTest.kt | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt index 17a66541..70f283a4 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt @@ -335,10 +335,12 @@ internal class BackupCoordinator( TAG, "Cancel full backup of ${packageInfo.packageName}" + " because of ${state.cancelReason}" ) - onPackageBackupError(packageInfo, BackupType.FULL) + // don't bother with system apps that have no data + val ignoreApp = state.cancelReason == NO_DATA && packageInfo.isSystemApp() + if (!ignoreApp) onPackageBackupError(packageInfo, BackupType.FULL) val token = settingsManager.getToken() ?: error("no token in cancelFullBackup") val salt = metadataManager.salt - full.cancelFullBackup(token, salt) + full.cancelFullBackup(token, salt, ignoreApp) } // Clear and Finish @@ -482,8 +484,6 @@ internal class BackupCoordinator( } private suspend fun onPackageBackupError(packageInfo: PackageInfo, type: BackupType) { - // don't bother with system apps that have no data - if (state.cancelReason == NO_DATA && packageInfo.isSystemApp()) return val packageName = packageInfo.packageName try { plugin.getMetadataOutputStream().use { diff --git a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt index 06ebbbaa..247de6db 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt @@ -177,11 +177,11 @@ internal class FullBackup( plugin.removeData(token, name) } - suspend fun cancelFullBackup(token: Long, salt: String) { + suspend fun cancelFullBackup(token: Long, salt: String, ignoreApp: Boolean) { Log.i(TAG, "Cancel full backup") val state = this.state ?: throw AssertionError("No state when canceling") try { - clearBackupData(state.packageInfo, token, salt) + if (!ignoreApp) clearBackupData(state.packageInfo, token, salt) } catch (e: IOException) { Log.w(TAG, "Error cancelling full backup for ${state.packageName}", e) } diff --git a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt index 915f4de1..15a5ee0c 100644 --- a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt +++ b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt @@ -326,7 +326,7 @@ internal class BackupCoordinatorTest : BackupTest() { BackupType.FULL ) } just Runs - coEvery { full.cancelFullBackup(token, metadata.salt) } just Runs + coEvery { full.cancelFullBackup(token, metadata.salt, false) } just Runs every { settingsManager.getStorage() } returns storage every { metadataOutputStream.close() } just Runs @@ -375,7 +375,7 @@ internal class BackupCoordinatorTest : BackupTest() { BackupType.FULL ) } just Runs - coEvery { full.cancelFullBackup(token, metadata.salt) } just Runs + coEvery { full.cancelFullBackup(token, metadata.salt, false) } just Runs every { settingsManager.getStorage() } returns storage every { metadataOutputStream.close() } just Runs diff --git a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt index ed9dd25c..2d03dd7e 100644 --- a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt +++ b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt @@ -237,7 +237,7 @@ internal class FullBackupTest : BackupTest() { assertEquals(TRANSPORT_OK, backup.performFullBackup(packageInfo, data, 0, token, salt)) assertTrue(backup.hasState()) - backup.cancelFullBackup(token, salt) + backup.cancelFullBackup(token, salt, false) assertFalse(backup.hasState()) } @@ -251,7 +251,7 @@ internal class FullBackupTest : BackupTest() { assertEquals(TRANSPORT_OK, backup.performFullBackup(packageInfo, data, 0, token, salt)) assertTrue(backup.hasState()) - backup.cancelFullBackup(token, salt) + backup.cancelFullBackup(token, salt, false) assertFalse(backup.hasState()) }