diff options
| author | 2017-07-13 20:07:09 +0000 | |
|---|---|---|
| committer | 2017-07-13 20:07:09 +0000 | |
| commit | ee21301a2876016d2d35d7c29e95debe1dd57fb4 (patch) | |
| tree | aa61c7262de143ab0a9c582c12f0fac0867b6005 | |
| parent | a49d2eedc9092da08fe226aeaf1c375ad8b31e2b (diff) | |
| parent | 1ff9475ea017f7ac0ba5e57368ad8a95dabd5f31 (diff) | |
Merge "Merge "Tear down agent after preflight rejection" into oc-dr1-dev am: 47303ec66b am: 19bb6c35ca"
| -rw-r--r-- | services/backup/java/com/android/server/backup/BackupManagerService.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index 9486c157bacf..a02802859ca7 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -4875,6 +4875,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { final int N = mPackages.size(); final byte[] buffer = new byte[8192]; for (int i = 0; i < N; i++) { + mBackupRunner = null; PackageInfo currentPackage = mPackages.get(i); String packageName = currentPackage.packageName; if (DEBUG) { @@ -5058,7 +5059,13 @@ public class BackupManagerService implements BackupManagerServiceInterface { } EventLog.writeEvent(EventLogTags.FULL_BACKUP_AGENT_FAILURE, packageName, "transport rejected"); - // Do nothing, clean up, and continue looping. + // This failure state can come either a-priori from the transport, or + // from the preflight pass. If we got as far as preflight, we now need + // to tear down the target process. + if (mBackupRunner != null) { + tearDownAgentAndKill(currentPackage.applicationInfo); + } + // ... and continue looping. } else if (backupPackageStatus == BackupTransport.TRANSPORT_QUOTA_EXCEEDED) { sendBackupOnPackageResult(mBackupObserver, packageName, BackupManager.ERROR_TRANSPORT_QUOTA_EXCEEDED); @@ -5067,6 +5074,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { EventLog.writeEvent(EventLogTags.FULL_BACKUP_QUOTA_EXCEEDED, packageName); } + tearDownAgentAndKill(currentPackage.applicationInfo); // Do nothing, clean up, and continue looping. } else if (backupPackageStatus == BackupTransport.AGENT_ERROR) { sendBackupOnPackageResult(mBackupObserver, packageName, @@ -5090,6 +5098,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { EventLog.writeEvent(EventLogTags.FULL_BACKUP_TRANSPORT_FAILURE); // Abort entire backup pass. backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED; + tearDownAgentAndKill(currentPackage.applicationInfo); return; } else { // Success! |