Don't abandon child sessions (1/n)

It will throw if abandon() is called on a child session.

Bug: 211944991
Bug: 212665855
Bug: 67862680
Test: to be added
Change-Id: Ib0ba9f3786dda2d3174f3ea8c65d1061a3fcb586
This commit is contained in:
JW Wang
2022-01-03 15:43:54 +08:00
committed by Chun-Wei Wang
parent 6a4c2b653e
commit 8b67e7db79

View File

@@ -404,7 +404,11 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
if (age >= MAX_SESSION_AGE_ON_LOW_STORAGE_MILLIS) {
// Aggressively close old sessions because we are running low on storage
// Their staging dirs will be removed too
session.abandon();
PackageInstallerSession root = !session.hasParentSessionId()
? session : mSessions.get(session.getParentSessionId());
if (!root.isDestroyed()) {
root.abandon();
}
} else {
// Session is new enough, so it deserves to be kept even on low storage
unclaimedStagingDirsOnVolume.remove(session.stageDir);