diff options
| author | 2019-10-22 14:55:54 +0100 | |
|---|---|---|
| committer | 2019-10-22 14:55:54 +0100 | |
| commit | 67ce22c57b51e7e41c667f51ad3de73cffbeb799 (patch) | |
| tree | 7b703479c3cc18914b4435af6726712735abcc6c | |
| parent | 7825637f80138800eb3bb5901d056a2ef4f03646 (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.java | 2 |
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"); } |