From 42d97911487c0f8529d6c7d9d743eaf3449449cb Mon Sep 17 00:00:00 2001 From: dimorinny Date: Wed, 15 Dec 2021 23:44:53 +0000 Subject: [PATCH] Get rid of unnecessary grant file locking that may potentially affect AM performance. Even though this file is accessed from separate threads, there is no space for race condition here because it is read in the very early stages of system boot but writes may only happen in 10 seconds after communication. Bug: 149370983 Test: locally by flashing device and check basic functionality and atest UriGrantsManagerServiceTest Change-Id: I3737646cbc0333b0dcbdc89fb8e165b0c2432018 --- .../android/server/uri/UriGrantsManagerService.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index b17257a9db805..78946dd921ba1 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -117,7 +117,6 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { PackageManagerInternal mPmInternal; /** File storing persisted {@link #mGrantedUriPermissions}. */ - @GuardedBy("mLock") private final AtomicFile mGrantFile; /** XML constants used in {@link #mGrantFile} */ @@ -1299,15 +1298,14 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { return false; } - @GuardedBy("mLock") - private void writeGrantedUriPermissionsLocked() { + private void writeGrantedUriPermissions() { if (DEBUG) Slog.v(TAG, "writeGrantedUriPermissions()"); final long startTime = SystemClock.uptimeMillis(); // Snapshot permissions so we can persist without lock ArrayList persist = Lists.newArrayList(); - synchronized (this) { + synchronized (mLock) { final int size = mGrantedUriPermissions.size(); for (int i = 0; i < size; i++) { final ArrayMap perms = mGrantedUriPermissions.valueAt(i); @@ -1360,9 +1358,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { public void handleMessage(Message msg) { switch (msg.what) { case PERSIST_URI_GRANTS_MSG: { - synchronized (mLock) { - writeGrantedUriPermissionsLocked(); - } + writeGrantedUriPermissions(); break; } }