From a3d8ce430c85bc9ad440473def69a16bc0395bb7 Mon Sep 17 00:00:00 2001 From: Terry Wang Date: Wed, 9 Jun 2021 18:50:53 -0700 Subject: [PATCH] Close AppSearchImpl in handling user removed broadcast. Flushing takes a few ms, it seems like a pretty good trade off compared to keeping an icing instance in memory forever. Bug: 179390369 Test: presubmit Change-Id: Ic0493137dc8c33d44bd074bbd9ca4ae442049513 --- .../appsearch/AppSearchManagerService.java | 2 +- .../server/appsearch/ImplInstanceManager.java | 19 ------------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java index 0709ff5fc48c8..4721d77e8cb9a 100644 --- a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java +++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java @@ -179,7 +179,7 @@ public class AppSearchManagerService extends SystemService { */ private void handleUserRemoved(@NonNull UserHandle userHandle) { try { - mImplInstanceManager.removeAppSearchImplForUser(userHandle); + mImplInstanceManager.closeAndRemoveAppSearchImplForUser(userHandle); mLoggerInstanceManager.removePlatformLoggerForUser(userHandle); Log.i(TAG, "Removed AppSearchImpl instance for: " + userHandle); } catch (Throwable t) { diff --git a/apex/appsearch/service/java/com/android/server/appsearch/ImplInstanceManager.java b/apex/appsearch/service/java/com/android/server/appsearch/ImplInstanceManager.java index 0775272201492..e7845d51568d5 100644 --- a/apex/appsearch/service/java/com/android/server/appsearch/ImplInstanceManager.java +++ b/apex/appsearch/service/java/com/android/server/appsearch/ImplInstanceManager.java @@ -103,25 +103,6 @@ public final class ImplInstanceManager { } } - /** - * Remove an instance of {@link AppSearchImpl} for the given user. - * - *

This method should only be called if {@link AppSearchManagerService} receives an - * ACTION_USER_REMOVED, which the instance of given user should be removed. - * - *

If the user is removed, the "credential encrypted" system directory where icing lives will - * be auto-deleted. So we shouldn't worry about persist data or close the AppSearchImpl. - * - * @param userHandle The multi-user user handle of the user that need to be removed. - */ - public void removeAppSearchImplForUser(@NonNull UserHandle userHandle) { - Objects.requireNonNull(userHandle); - synchronized (mInstancesLocked) { - // no need to close and persist data to disk since we are removing them now. - mInstancesLocked.remove(userHandle); - } - } - /** * Close and remove an instance of {@link AppSearchImpl} for the given user. *