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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user