From 80fabc6584d47d9b6c1a7b51046765760f0728c6 Mon Sep 17 00:00:00 2001 From: Elis Elliott Date: Thu, 20 Jul 2023 13:57:18 +0000 Subject: Use a single thread executor for calculateHasIncompatibleAccounts Fixes: 290812970 Test: Manual Change-Id: If4015ba049babe3f0531b0ed4a430beaaa28dfa3 --- .../server/devicepolicy/DevicePolicyManagerService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index e44b8cdbaab0..51e4fe3027f3 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -241,7 +241,6 @@ import static android.provider.Telephony.Carriers.ENFORCE_KEY; import static android.provider.Telephony.Carriers.ENFORCE_MANAGED_URI; import static android.provider.Telephony.Carriers.INVALID_APN_ID; import static android.security.keystore.AttestationUtils.USE_INDIVIDUAL_ATTESTATION; - import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENTRY_POINT_ADB; import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW; @@ -540,6 +539,8 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.function.Consumer; @@ -18803,10 +18804,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { }); } + ThreadPoolExecutor calculateHasIncompatibleAccountsExecutor = new ThreadPoolExecutor( + 1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>()); + @Override public void calculateHasIncompatibleAccounts() { + if (calculateHasIncompatibleAccountsExecutor.getQueue().size() > 1) { + return; + } new CalculateHasIncompatibleAccountsTask().executeOnExecutor( - AsyncTask.THREAD_POOL_EXECUTOR, null); + calculateHasIncompatibleAccountsExecutor, null); } @Nullable -- cgit v1.2.3-59-g8ed1b