Don't abandon child sessions (1/n)

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

Bug: 211944991
Bug: 67862680
Test: to be added
Change-Id: Ib0ba9f3786dda2d3174f3ea8c65d1061a3fcb586
Merged-In: Ib0ba9f3786dda2d3174f3ea8c65d1061a3fcb586
(cherry picked from commit 8b67e7db79)
This commit is contained in:
JW Wang
2022-01-03 15:43:54 +08:00
committed by Songchun Fan
parent b7f37cd797
commit 4e222d1a5c

View File

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