diff options
author | Nikita Ioffe <ioffe@google.com> | 2019-02-27 15:34:08 +0000 |
---|---|---|
committer | Nikita Ioffe <ioffe@google.com> | 2019-02-27 15:34:08 +0000 |
commit | fb6688e3feb8a68e7da19e04967d26c0b3e5e78c (patch) | |
tree | f09fe3170f1eaba17084b55a399e764d1b4f92e9 | |
parent | 750c23d5415c3d012edf2bf91a49098de691091c (diff) |
Fail staged session if apexd session is in ROLLBACK_IN_PROGRESS state
This covers a (very unlikely) scenario, in which device was rebooted
during apexd rollback, and apexd wasn't able to resume rollback after
the reboot.
For a tiny bit more context see: aosp/912794
Bug: 123622800
Test: none
Change-Id: Idbb142dce2dbc85b818ba42e93ab107e4955301d
-rw-r--r-- | services/core/java/com/android/server/pm/StagingManager.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index fac383945afd..f6de16a87eed 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -491,8 +491,10 @@ public class StagingManager { } private static boolean isApexSessionFailed(ApexSessionInfo apexSessionInfo) { + // isRollbackInProgress is included to cover the scenario, when a device is rebooted in + // during the rollback, and apexd fails to resume the rollback after reboot. return apexSessionInfo.isActivationFailed || apexSessionInfo.isUnknown - || apexSessionInfo.isRolledBack; + || apexSessionInfo.isRolledBack || apexSessionInfo.isRollbackInProgress; } @GuardedBy("mStagedSessions") |