summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gavin Corkery <gavincorkery@google.com> 2019-10-22 14:55:54 +0100
committer Gavin Corkery <gavincorkery@google.com> 2019-10-22 14:55:54 +0100
commit67ce22c57b51e7e41c667f51ad3de73cffbeb799 (patch)
tree7b703479c3cc18914b4435af6726712735abcc6c
parent7825637f80138800eb3bb5901d056a2ef4f03646 (diff)
Don't mark terminal staged sessions as failed
Currently we mark sessions in an already-terminal state (applied or failed) as failed when there is a build fingerprint change. This can cause issues with trying to clean a non-existent directory. Change this logic to check the status of the session when marking as failed. Test: atest StagedInstallTest Bug: 142963471 Change-Id: I163a3c6558117455038608e15065e076e2dd82d2
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerService.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 00c0566a1c4c..ed2bb3d53649 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -259,7 +259,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
// Don't hold mSessions lock when calling restoreSession, since it might trigger an APK
// atomic install which needs to query sessions, which requires lock on mSessions.
for (PackageInstallerSession session : stagedSessionsToRestore) {
- if (mPm.isDeviceUpgrading()) {
+ if (mPm.isDeviceUpgrading() && !session.isStagedAndInTerminalState()) {
session.setStagedSessionFailed(SessionInfo.STAGED_SESSION_ACTIVATION_FAILED,
"Build fingerprint has changed");
}