delete ENABLING rollback if we can't get session info for it.

If we can't get the SessionInfo for a rollback in ENABLE state on boot,
then presumably we'll never be able to get SessionInfo for it, so delete
the rollback.

Test: adb install TestAppAv1.apk;
      adb install --enable-rollback --staged TestAppAv2.apk
      dumpsys rollback
      adb shell pm install-abandon <stagedSessionId from dumpsys rollback>
      adb reboot, confirm /data/rollback/<rollbackId> does not exist
      adb reboot
      dumpsys rollback, confirm rollback is no longer listed.

Bug: 134652027
Change-Id: Ie583536d0ec75c442bd4c9e4456bee120050728c
This commit is contained in:
Richard Uhler
2019-07-01 16:27:43 +01:00
parent 1d8b9961bc
commit ded86e4aae

View File

@@ -648,17 +648,14 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
PackageInstaller installer = mContext.getPackageManager().getPackageInstaller();
PackageInstaller.SessionInfo session = installer.getSessionInfo(
data.stagedSessionId);
// TODO: What if session is null?
if (session != null) {
if (session.isStagedSessionApplied()) {
makeRollbackAvailable(data);
} else if (session.isStagedSessionFailed()) {
// TODO: Do we need to remove this from
// mRollbacks, or is it okay to leave as
// unavailable until the next reboot when it will go
// away on its own?
deleteRollback(data);
}
if (session == null || session.isStagedSessionFailed()) {
// TODO: Do we need to remove this from
// mRollbacks, or is it okay to leave as
// unavailable until the next reboot when it will go
// away on its own?
deleteRollback(data);
} else if (session.isStagedSessionApplied()) {
makeRollbackAvailable(data);
}
}