Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 806ccabb authored by Mohammad Samiul Islam's avatar Mohammad Samiul Islam
Browse files

Allow staging multi-package session immediately after abandonment

When we stage a session, we compare it with other already staged
sessions to detect overlap. We do not allow a session to stage if it
contains a package which is already staged in another session.

Due to a bug, while comparing we were not excluding sessions whose
parents were abandoned already. This CL fixes that.

Bug: 159409632
Test: atest
StagedInstallTest#testStageAnotherSessionImmediatelyAfterAbandonMultiPackage

Change-Id: I740986af666b3d2d8ab832c4bcdb855c1ed3c16f
parent 1f6b99d5
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -969,19 +969,19 @@ public class StagingManager {
                    // name and the session we are checking is not a parent session either.
                    continue;
                }

                // From here on, stagedSession is a non-parent active staged session

                // Check if stagedSession has an active parent session or not
                if (stagedSession.hasParentSessionId()) {
                    int parentId = stagedSession.getParentSessionId();
                    PackageInstallerSession parentSession = mStagedSessions.get(parentId);
                    if (parentSession == null || parentSession.isStagedAndInTerminalState()) {
                    if (parentSession == null || parentSession.isStagedAndInTerminalState()
                            || parentSession.isDestroyed()) {
                        // Parent session has been abandoned or terminated already
                        continue;
                    }
                }

                // From here on, stagedSession is a non-parent active staged session

                // Check if session is one of the active sessions
                if (session.sessionId == stagedSession.sessionId) {
                    Slog.w(TAG, "Session " + session.sessionId + " is already staged");