summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chun-Wei Wang <wangchun@google.com> 2022-01-05 10:42:34 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-01-05 10:42:34 +0000
commit1cd3bfd430a9c210f2ede49b70795f1d63704abd (patch)
tree9f4f61b4559348da25fa1287ccccd14ea0799a72
parent66b3b89f655f8659e9233053f6362f13b496dd53 (diff)
parent8b67e7db79d15ab448ae8f00b40a4a350ab3d537 (diff)
Merge "Don't abandon child sessions (1/n)"
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerService.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index e9d7bb9836b2..cfcf199d01a4 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -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);