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

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

Merge "Implement metrics to log when to call PropertyInvalidatedCache invalidation" into main

parents 107114d1 573ce49d
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -176,8 +176,9 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
    private void onChanged() {
        // App visibility may have changed, which means that earlier fetches from these caches may
        // be invalid.
        PackageManager.invalidatePackageInfoCache();
        ApplicationPackageManager.invalidateGetPackagesForUidCache();
        final int invalidationReason = PackageMetrics.INVALIDATION_REASON_APP_FILTER_CHANGE;
        PackageManagerService.invalidatePackageInfoCache(invalidationReason);
        PackageManagerService.invalidateGetPackagesForUidCache(invalidationReason);
        ApplicationPackageManager.invalidateQueryIntentActivitiesCache();
        dispatchChange(this);
    }
+2 −2
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import android.annotation.Nullable;
import android.annotation.SpecialUsers.CanBeALL;
import android.annotation.UserIdInt;
import android.app.ApplicationExitInfo;
import android.app.ApplicationPackageManager;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.Flags;
@@ -265,7 +264,8 @@ final class DeletePackageHelper {
                    mPm.updateInstantAppInstallerLocked(packageName);
                }
            }
            ApplicationPackageManager.invalidateGetPackagesForUidCache();
            PackageManagerService.invalidateGetPackagesForUidCache(
                    PackageMetrics.INVALIDATION_REASON_DELETE_PACKAGE);
        }

        if (res) {
+2 −2
Original line number Diff line number Diff line
@@ -104,7 +104,6 @@ import android.annotation.UserIdInt;
import android.apex.ApexInfo;
import android.app.AppOpsManager;
import android.app.ApplicationExitInfo;
import android.app.ApplicationPackageManager;
import android.app.BroadcastOptions;
import android.app.admin.DevicePolicyManagerInternal;
import android.app.backup.IBackupManager;
@@ -2536,7 +2535,8 @@ final class InstallPackageHelper {
            }
            installRequest.onCommitFinished();
        }
        ApplicationPackageManager.invalidateGetPackagesForUidCache();
        PackageManagerService.invalidateGetPackagesForUidCache(
                PackageMetrics.INVALIDATION_REASON_INSTALL_PACKAGE);
    }

    @GuardedBy("mPm.mLock")
+2 −1
Original line number Diff line number Diff line
@@ -626,7 +626,8 @@ class InstallingSession {
        } catch (PackageManagerException e) {
            request.setError("APEX installation failed", e);
        }
        PackageManagerService.invalidatePackageInfoCache();
        PackageManagerService.invalidatePackageInfoCache(
                PackageMetrics.INVALIDATION_REASON_INSTALL_APEX_PACKAGE);
        ApplicationPackageManager.invalidateQueryIntentActivitiesCache();
        mPm.notifyInstallObserver(request);
    }
+27 −8
Original line number Diff line number Diff line
@@ -768,7 +768,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            // disable all package caches that shouldn't apply within system server
            PackageManager.disableApplicationInfoCache();
            PackageManager.disablePackageInfoCache();
            ApplicationPackageManager.invalidateGetPackagesForUidCache();
            invalidateGetPackagesForUidCache(
                    PackageMetrics.INVALIDATION_REASON_DISABLE_PACKAGE_CACHES);
            ApplicationPackageManager.disableGetPackagesForUidCache();
            ApplicationPackageManager.invalidateHasSystemFeatureCache();
            PackageManager.corkPackageInfoCache();
@@ -1050,9 +1051,21 @@ public class PackageManagerService implements PackageSender, TestUtilityService
     * Invalidate the package info cache, which includes updating the cached computer.
     * @hide
     */
    public static void invalidatePackageInfoCache() {
    public static void invalidatePackageInfoCache(int invalidationReason) {
        PackageManager.invalidatePackageInfoCache();
        onChanged();
        PackageMetrics.reportCacheInvalidationEvent(
                PackageMetrics.CACHE_TYPE_APPLICATION_AND_PACKAGE_INFO, invalidationReason);
    }

    /**
     * Invalidate the get packages for UID cache, which includes updating the cached computer.
     * @hide
     */
    public static void invalidateGetPackagesForUidCache(int invalidationReason) {
        ApplicationPackageManager.invalidateGetPackagesForUidCache();
        PackageMetrics.reportCacheInvalidationEvent(
                PackageMetrics.CACHE_TYPE_GET_PACKAGES_FOR_UID, invalidationReason);
    }

    private final Watcher mWatcher = new Watcher() {
@@ -1581,7 +1594,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        // We normally invalidate when we write settings, but in cases where we delay and
        // coalesce settings writes, this strategy would have us invalidate the cache too late.
        // Invalidating on schedule addresses this problem.
        invalidatePackageInfoCache();
        invalidatePackageInfoCache(
                PackageMetrics.INVALIDATION_REASON_SCHEDULE_WRITE_SETTINGS);
        ApplicationPackageManager.invalidateQueryIntentActivitiesCache();
        if (!mHandler.hasMessages(WRITE_SETTINGS)) {
            mHandler.sendEmptyMessageDelayed(WRITE_SETTINGS, WRITE_SETTINGS_DELAY);
@@ -1589,7 +1603,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    }

    void scheduleWritePackageListLocked(int userId) {
        invalidatePackageInfoCache();
        invalidatePackageInfoCache(
                PackageMetrics.INVALIDATION_REASON_SCHEDULE_WRITE_PACKAGE_LIST);
        ApplicationPackageManager.invalidateQueryIntentActivitiesCache();
        if (!mHandler.hasMessages(WRITE_PACKAGE_LIST)) {
            Message msg = mHandler.obtainMessage(WRITE_PACKAGE_LIST);
@@ -1604,7 +1619,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    }

    void scheduleWritePackageRestrictions(@CanBeALL @UserIdInt int userId) {
        invalidatePackageInfoCache();
        invalidatePackageInfoCache(
                PackageMetrics.INVALIDATION_REASON_SCHEDULE_WRITE_PACKAGE_RESTRICTIONS);
        if (userId == USER_ALL) {
            synchronized (mDirtyUsers) {
                for (int aUserId : mUserManager.getUserIds()) {
@@ -1985,7 +2001,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        mPackageMonitorCallbackHelper = testParams.packageMonitorCallbackHelper;

        registerObservers(false);
        invalidatePackageInfoCache();
        invalidatePackageInfoCache(
                PackageMetrics.INVALIDATION_REASON_PACKAGE_MANAGER_SERVICE_INIT);
    }

    public PackageManagerService(PackageManagerServiceInjector injector, boolean factoryTest,
@@ -7551,7 +7568,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            }
        }

        invalidatePackageInfoCache();
        invalidatePackageInfoCache(
                PackageMetrics.INVALIDATION_REASON_ENABLE_OVERLAY_PACKAGES);
    }

    private boolean canSetOverlayPaths(OverlayPaths origPaths, OverlayPaths newPaths) {
@@ -7738,7 +7756,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }

        if (accessGranted) {
            ApplicationPackageManager.invalidateGetPackagesForUidCache();
            invalidateGetPackagesForUidCache(
                    PackageMetrics.INVALIDATION_REASON_GRANT_IMPLICIT_ACCESS);
        }
    }

Loading