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

Commit 73bb4a52 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Flag removal: improve_install_freeze" into main

parents f660b558 3147db45
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApexStagedEvent;
import android.content.pm.Flags;
import android.content.pm.IPackageManagerNative;
import android.content.pm.IStagedApexObserver;
import android.content.pm.PackageManager;
@@ -59,7 +58,6 @@ import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings.Global;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
@@ -824,16 +822,10 @@ public final class DexOptHelper {
        final PackageSetting ps = installRequest.getScannedPackageSetting();
        final String packageName = ps.getPackageName();

        PackageSetting uncommittedPs = null;
        if (Flags.improveInstallFreeze()) {
            uncommittedPs = ps;
        }

        PackageManagerLocal packageManagerLocal =
                LocalManagerRegistry.getManager(PackageManagerLocal.class);
        try (PackageManagerLocal.FilteredSnapshot snapshot =
                     PackageManagerLocalImpl.withFilteredSnapshot(packageManagerLocal,
                uncommittedPs)) {
                     PackageManagerLocalImpl.withFilteredSnapshot(packageManagerLocal, ps)) {
            boolean ignoreDexoptProfile =
                    (installRequest.getInstallFlags()
                            & PackageManager.INSTALL_IGNORE_DEXOPT_PROFILE)
+238 −278
Original line number Diff line number Diff line
@@ -1051,17 +1051,11 @@ final class InstallPackageHelper {

                if (renameAndUpdatePaths(requests)) {
                    // rename before dexopt because art will encoded the path in the odex/vdex file
                    if (Flags.improveInstallFreeze()) {
                    pendingForDexopt = true;
                    final Runnable actionsAfterDexopt = () ->
                            doPostDexopt(reconciledPackages, requests,
                                    createdAppId, moveInfo, acquireTime);
                    prepPerformDexoptIfNeeded(reconciledPackages, actionsAfterDexopt);
                    } else {
                        if (commitInstallPackages(reconciledPackages)) {
                            success = true;
                        }
                    }
                }
            }
        } finally {
@@ -1401,7 +1395,6 @@ final class InstallPackageHelper {

    private boolean commitInstallPackages(List<ReconciledPackage> reconciledPackages) {
        try (PackageManagerTracedLock installLock = mPm.mInstallLock.acquireLock()) {
            if (Flags.improveInstallFreeze()) {
            // Postpone freezer until after reconcile
            for (ReconciledPackage reconciledPkg : reconciledPackages) {
                InstallRequest installRequest = reconciledPkg.mInstallRequest;
@@ -1412,7 +1405,6 @@ final class InstallPackageHelper {
                        installRequest);
                installRequest.setFreezer(freezer);
            }
            }
            synchronized (mPm.mLock) {
                try {
                    Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "commitPackages");
@@ -2012,15 +2004,6 @@ final class InstallPackageHelper {
            parsedPackage.setBaseApkPath(request.getApexInfo().modulePath);
        }

        PackageFreezer freezer = null;
        if (!Flags.improveInstallFreeze()) {
            freezer = freezePackageForInstall(pkgName, UserHandle.USER_ALL, installFlags,
                    "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED, request);
        }


        boolean shouldCloseFreezerBeforeReturn = true;
        try {
        final PackageSetting oldPackageState;
        final AndroidPackage oldPackage;
        String renamedPackage;
@@ -2275,20 +2258,10 @@ final class InstallPackageHelper {
                }
            }
        }
            // we're passing the freezer back to be closed in a later phase of install
            shouldCloseFreezerBeforeReturn = false;

        request.setPrepareResult(replace, targetScanFlags, targetParseFlags,
                oldPackageState, parsedPackage, archivedPackage,
                replace /* clearCodeCache */, sysPkg, ps, disabledPs);
        } finally {
            if (freezer != null) {
                request.setFreezer(freezer);
                if (shouldCloseFreezerBeforeReturn) {
                    freezer.close();
                }
            }
        }
    }

    /**
@@ -2856,19 +2829,6 @@ final class InstallPackageHelper {
                mDexManager.notifyPackageUpdated(packageName,
                        pkg.getBaseApkPath(), pkg.getSplitCodePaths());
            }
            if (!Flags.improveInstallFreeze()) {
                // Hardcode previousAppId to 0 to disable any data migration (http://b/221088088)
                mAppDataHelper.prepareAppDataPostCommitLIF(ps, 0, installRequest.getNewUsers());
                if (installRequest.isClearCodeCache()) {
                    mAppDataHelper.clearAppDataLIF(ps.getPkg(), UserHandle.USER_ALL,
                            FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL
                                    | Installer.FLAG_CLEAR_CODE_CACHE_ONLY);
                }

                // run synchronous dexopt if the freeze improvement is not supported
                DexOptHelper.performDexoptIfNeeded(
                        installRequest, mDexManager, mPm.mInstallLock.getRawLock());
            }
        }
        PackageManagerServiceUtils.waitForNativeBinariesExtractionForIncremental(
                incrementalStorages);