From 04319f01f3c557cdc7dbef9ba9ec6d233cab2a9e Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Mon, 22 Nov 2021 21:21:08 +0000 Subject: [PATCH] [pm] revert lock changes for AppsFilter ag/16176950 introduced a lock contention in AppsFilter between "StateProvider.mLock" and "PackageManagerService.mSnapshotLock". Reverting that part of the code. BUG: 207105991 Test: manual Change-Id: Id8cb79e2700af473dbc5dc675f630cfd311b2167 --- .../java/com/android/server/pm/AppsFilter.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java index 53c2802ab76ae..6f54625224bf5 100644 --- a/services/core/java/com/android/server/pm/AppsFilter.java +++ b/services/core/java/com/android/server/pm/AppsFilter.java @@ -500,16 +500,10 @@ public class AppsFilter implements Watchable, Snappable { forcedQueryablePackageNames[i] = forcedQueryablePackageNames[i].intern(); } } - final StateProvider stateProvider = new StateProvider() { - // TODO: This lock and its handling should be owned by AppsFilter - private final Object mLock = new Object(); - - @Override - public void runWithState(CurrentStateCallback command) { - synchronized (mLock) { - command.currentState(pms.getPackageStates(), - injector.getUserManagerInternal().getUserInfos()); - } + final StateProvider stateProvider = command -> { + synchronized (injector.getLock()) { + command.currentState(injector.getSettings().getPackagesLocked().untrackedStorage(), + injector.getUserManagerInternal().getUserInfos()); } }; AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig,