diff options
| author | 2022-01-11 23:31:01 +0000 | |
|---|---|---|
| committer | 2022-01-11 23:31:01 +0000 | |
| commit | 5bf4a3f29e2dda513b227188867b58abcc4e51db (patch) | |
| tree | 98c832aa03a5033ab7f7769bea247b1efa0925a0 | |
| parent | 331b61794982778acd140eeae5047730072c93d5 (diff) | |
| parent | a4ef9e0e00416d8e211bd749da42033ae4fd9eb2 (diff) | |
Merge "Don't abandon child sessions (1/n)" into qt-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerService.java | 8 |
1 files changed, 7 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 a096f2252680..2bd561a382ee 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -330,7 +330,13 @@ 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.isStaged() || (root.isStaged() && root.isStagedSessionReady()))) + { + root.abandon(); + } } else { // Session is new enough, so it deserves to be kept even on low storage unclaimedStagingDirsOnVolume.remove(session.stageDir); |