summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Ioffe <ioffe@google.com>2019-02-27 15:34:08 +0000
committerNikita Ioffe <ioffe@google.com>2019-02-27 15:34:08 +0000
commitfb6688e3feb8a68e7da19e04967d26c0b3e5e78c (patch)
treef09fe3170f1eaba17084b55a399e764d1b4f92e9
parent750c23d5415c3d012edf2bf91a49098de691091c (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.java4
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")