summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android Build Merger (Role) <android-build-merger@google.com> 2017-07-13 20:07:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-07-13 20:07:09 +0000
commitee21301a2876016d2d35d7c29e95debe1dd57fb4 (patch)
treeaa61c7262de143ab0a9c582c12f0fac0867b6005
parenta49d2eedc9092da08fe226aeaf1c375ad8b31e2b (diff)
parent1ff9475ea017f7ac0ba5e57368ad8a95dabd5f31 (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.java11
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!