Skip to content

Commit 57d3b15

Browse files
authored
Enable thread pool linter check. (#4297)
* Enable thread pool linter check. All violations are now suppressed, bugs filed to fix each product. * ktlint * Remove init * Fix copyright
1 parent 4173c8c commit 57d3b15

File tree

45 files changed

+262
-29
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+262
-29
lines changed

appcheck/firebase-appcheck-debug/src/main/java/com/google/firebase/appcheck/debug/internal/DebugAppCheckProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static com.google.android.gms.common.internal.Preconditions.checkNotNull;
1818

19+
import android.annotation.SuppressLint;
1920
import android.util.Log;
2021
import androidx.annotation.NonNull;
2122
import androidx.annotation.Nullable;
@@ -45,6 +46,8 @@ public class DebugAppCheckProvider implements AppCheckProvider {
4546
private final RetryManager retryManager;
4647
private final Task<String> debugSecretTask;
4748

49+
// TODO(b/258273630): Migrate to go/firebase-android-executors
50+
@SuppressLint("ThreadPoolCreation")
4851
public DebugAppCheckProvider(@NonNull FirebaseApp firebaseApp, @Nullable String debugSecret) {
4952
checkNotNull(firebaseApp);
5053
this.networkClient = new NetworkClient(firebaseApp);

appcheck/firebase-appcheck-playintegrity/src/main/java/com/google/firebase/appcheck/playintegrity/internal/PlayIntegrityAppCheckProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.appcheck.playintegrity.internal;
1616

17+
import android.annotation.SuppressLint;
1718
import androidx.annotation.NonNull;
1819
import androidx.annotation.VisibleForTesting;
1920
import com.google.android.gms.tasks.Task;
@@ -41,6 +42,8 @@ public class PlayIntegrityAppCheckProvider implements AppCheckProvider {
4142
private final ExecutorService backgroundExecutor;
4243
private final RetryManager retryManager;
4344

45+
// TODO(b/258273630): Migrate to go/firebase-android-executors
46+
@SuppressLint("ThreadPoolCreation")
4447
public PlayIntegrityAppCheckProvider(@NonNull FirebaseApp firebaseApp) {
4548
this(
4649
firebaseApp.getOptions().getGcmSenderId(),

appcheck/firebase-appcheck-safetynet/src/main/java/com/google/firebase/appcheck/safetynet/internal/SafetyNetAppCheckProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static com.google.android.gms.common.internal.Preconditions.checkNotEmpty;
1818
import static com.google.android.gms.common.internal.Preconditions.checkNotNull;
1919

20+
import android.annotation.SuppressLint;
2021
import android.content.Context;
2122
import androidx.annotation.NonNull;
2223
import androidx.annotation.VisibleForTesting;
@@ -56,6 +57,8 @@ public class SafetyNetAppCheckProvider implements AppCheckProvider {
5657
private final String apiKey;
5758

5859
/** @param firebaseApp the FirebaseApp to which this Factory is tied. */
60+
// TODO(b/258273630): Migrate to go/firebase-android-executors
61+
@SuppressLint("ThreadPoolCreation")
5962
public SafetyNetAppCheckProvider(@NonNull FirebaseApp firebaseApp) {
6063
this(
6164
firebaseApp,

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/DefaultFirebaseAppCheck.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static com.google.android.gms.common.internal.Preconditions.checkNotNull;
1818

19+
import android.annotation.SuppressLint;
1920
import androidx.annotation.NonNull;
2021
import androidx.annotation.Nullable;
2122
import androidx.annotation.VisibleForTesting;
@@ -57,6 +58,8 @@ public class DefaultFirebaseAppCheck extends FirebaseAppCheck {
5758
private AppCheckProvider appCheckProvider;
5859
private AppCheckToken cachedToken;
5960

61+
// TODO(b/258273630): Migrate to go/firebase-android-executors
62+
@SuppressLint("ThreadPoolCreation")
6063
public DefaultFirebaseAppCheck(
6164
@NonNull FirebaseApp firebaseApp,
6265
@NonNull Provider<HeartBeatController> heartBeatController) {

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/DefaultTokenRefresher.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static java.util.concurrent.TimeUnit.MILLISECONDS;
1919
import static java.util.concurrent.TimeUnit.SECONDS;
2020

21+
import android.annotation.SuppressLint;
2122
import androidx.annotation.NonNull;
2223
import androidx.annotation.VisibleForTesting;
2324
import com.google.android.gms.tasks.OnFailureListener;
@@ -41,6 +42,8 @@ public class DefaultTokenRefresher {
4142
private volatile ScheduledFuture<?> refreshFuture;
4243
private volatile long delayAfterFailureSeconds;
4344

45+
// TODO(b/258273630): Migrate to go/firebase-android-executors
46+
@SuppressLint("ThreadPoolCreation")
4447
DefaultTokenRefresher(@NonNull DefaultFirebaseAppCheck firebaseAppCheck) {
4548
this(checkNotNull(firebaseAppCheck), Executors.newScheduledThreadPool(/* corePoolSize= */ 1));
4649
}

firebase-appdistribution/src/main/java/com/google/firebase/appdistribution/impl/AabUpdater.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.google.firebase.appdistribution.impl.TaskUtils.runAsyncInTask;
2020
import static com.google.firebase.appdistribution.impl.TaskUtils.safeSetTaskException;
2121

22+
import android.annotation.SuppressLint;
2223
import android.app.Activity;
2324
import android.content.Intent;
2425
import android.net.Uri;
@@ -52,6 +53,8 @@ class AabUpdater {
5253
@GuardedBy("updateAabLock")
5354
private boolean hasBeenSentToPlayForCurrentTask = false;
5455

56+
// TODO(b/258264924): Migrate to go/firebase-android-executors
57+
@SuppressLint("ThreadPoolCreation")
5558
AabUpdater() {
5659
this(
5760
FirebaseAppDistributionLifecycleNotifier.getInstance(),

firebase-appdistribution/src/main/java/com/google/firebase/appdistribution/impl/ApkUpdater.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.google.firebase.appdistribution.impl.TaskUtils.safeSetTaskException;
2020
import static com.google.firebase.appdistribution.impl.TaskUtils.safeSetTaskResult;
2121

22+
import android.annotation.SuppressLint;
2223
import android.content.Context;
2324
import android.os.Build.VERSION;
2425
import android.os.Build.VERSION_CODES;
@@ -62,6 +63,8 @@ class ApkUpdater {
6263

6364
private final Object updateTaskLock = new Object();
6465

66+
// TODO(b/258264924): Migrate to go/firebase-android-executors
67+
@SuppressLint("ThreadPoolCreation")
6568
public ApkUpdater(@NonNull FirebaseApp firebaseApp, @NonNull ApkInstaller apkInstaller) {
6669
this(
6770
Executors.newSingleThreadExecutor(),

firebase-appdistribution/src/main/java/com/google/firebase/appdistribution/impl/FirebaseAppDistributionTesterApiClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static com.google.firebase.appdistribution.impl.TaskUtils.runAsyncInTask;
1818

19+
import android.annotation.SuppressLint;
1920
import androidx.annotation.NonNull;
2021
import com.google.android.gms.tasks.Task;
2122
import com.google.android.gms.tasks.Tasks;
@@ -63,6 +64,9 @@ private interface FidDependentJob<TResult> {
6364
private final FirebaseApp firebaseApp;
6465
private final Provider<FirebaseInstallationsApi> firebaseInstallationsApiProvider;
6566
private final TesterApiHttpClient testerApiHttpClient;
67+
68+
// TODO(b/258264924): Migrate to go/firebase-android-executors
69+
@SuppressLint("ThreadPoolCreation")
6670
private final Executor taskExecutor = Executors.newSingleThreadExecutor();
6771

6872
FirebaseAppDistributionTesterApiClient(

firebase-common/src/main/java/com/google/firebase/concurrent/SequentialExecutor.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
// Copyright 2022 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
115
package com.google.firebase.concurrent;
216

317
import static com.google.android.gms.common.internal.Preconditions.checkNotNull;

firebase-config/src/main/java/com/google/firebase/remoteconfig/RemoteConfigComponent.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.remoteconfig;
1616

17+
import android.annotation.SuppressLint;
1718
import android.content.Context;
1819
import android.content.SharedPreferences;
1920
import androidx.annotation.GuardedBy;
@@ -87,6 +88,8 @@ public class RemoteConfigComponent {
8788
private Map<String, String> customHeaders = new HashMap<>();
8889

8990
/** Firebase Remote Config Component constructor. */
91+
// TODO(b/258275481): Migrate to go/firebase-android-executors
92+
@SuppressLint("ThreadPoolCreation")
9093
RemoteConfigComponent(
9194
Context context,
9295
FirebaseApp firebaseApp,
@@ -211,6 +214,8 @@ public synchronized void setCustomHeaders(Map<String, String> customHeaders) {
211214
this.customHeaders = customHeaders;
212215
}
213216

217+
// TODO(b/258275481): Migrate to go/firebase-android-executors
218+
@SuppressLint("ThreadPoolCreation")
214219
private ConfigCacheClient getCacheClient(String namespace, String configStoreType) {
215220
String fileName =
216221
String.format(

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/CrashlyticsController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414
package com.google.firebase.crashlytics.internal.common;
1515

16+
import android.annotation.SuppressLint;
1617
import android.app.ActivityManager;
1718
import android.app.ApplicationExitInfo;
1819
import android.content.Context;
@@ -734,6 +735,9 @@ private Task<Void> logAnalyticsAppExceptionEvent(long timestamp) {
734735
return Tasks.forResult(null);
735736
}
736737
Logger.getLogger().d("Logging app exception event to Firebase Analytics");
738+
739+
// TODO(b/258263226): Migrate to go/firebase-android-executors
740+
@SuppressLint("ThreadPoolCreation")
737741
final ThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
738742
return Tasks.call(
739743
executor,

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/ExecutorUtils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static java.util.concurrent.TimeUnit.SECONDS;
1818

19+
import android.annotation.SuppressLint;
1920
import com.google.firebase.crashlytics.internal.Logger;
2021
import java.util.Locale;
2122
import java.util.concurrent.ExecutorService;
@@ -43,6 +44,8 @@ public static ExecutorService buildSingleThreadExecutorService(String name) {
4344

4445
public static ScheduledExecutorService buildSingleThreadScheduledExecutorService(String name) {
4546
final ThreadFactory threadFactory = ExecutorUtils.getNamedThreadFactory(name);
47+
// TODO(b/258263226): Migrate to go/firebase-android-executors
48+
@SuppressLint("ThreadPoolCreation")
4649
final ScheduledExecutorService executor =
4750
Executors.newSingleThreadScheduledExecutor(threadFactory);
4851
ExecutorUtils.addDelayedShutdownHook(name, executor);
@@ -70,6 +73,8 @@ public void onRun() {
7073
};
7174
}
7275

76+
// TODO(b/258263226): Migrate to go/firebase-android-executors
77+
@SuppressLint("ThreadPoolCreation")
7378
private static ExecutorService newSingleThreadExecutor(
7479
ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) {
7580
return Executors.unconfigurableExecutorService(
@@ -88,11 +93,14 @@ private static void addDelayedShutdownHook(String serviceName, ExecutorService s
8893
serviceName, service, DEFAULT_TERMINATION_TIMEOUT, SECONDS);
8994
}
9095

96+
// TODO(b/258263226): Migrate to go/firebase-android-executors
97+
@SuppressLint("ThreadPoolCreation")
9198
private static void addDelayedShutdownHook(
9299
final String serviceName,
93100
final ExecutorService service,
94101
final long terminationTimeout,
95102
final TimeUnit timeUnit) {
103+
96104
Runtime.getRuntime()
97105
.addShutdownHook(
98106
new Thread(

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/send/ReportQueue.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ final class ReportQueue {
6262
onDemandCounter);
6363
}
6464

65+
// TODO(b/258263226): Migrate to go/firebase-android-executors
66+
@SuppressLint("ThreadPoolCreation")
6567
ReportQueue(
6668
double ratePerMinute,
6769
double base,
@@ -120,7 +122,8 @@ TaskCompletionSource<CrashlyticsReportWithSessionId> enqueueReport(
120122
}
121123
}
122124

123-
@SuppressLint("DiscouragedApi") // best effort only
125+
// TODO(b/258263226): Migrate to go/firebase-android-executors
126+
@SuppressLint({"DiscouragedApi", "ThreadPoolCreation"}) // best effort only
124127
public void flushScheduledReportsIfAble() {
125128
CountDownLatch latch = new CountDownLatch(1);
126129
new Thread(

firebase-database/src/main/java/com/google/firebase/database/core/ThreadPoolEventTarget.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.database.core;
1616

17+
import android.annotation.SuppressLint;
1718
import java.util.concurrent.BlockingQueue;
1819
import java.util.concurrent.LinkedBlockingQueue;
1920
import java.util.concurrent.ThreadFactory;
@@ -25,6 +26,8 @@ class ThreadPoolEventTarget implements EventTarget {
2526

2627
private final ThreadPoolExecutor executor;
2728

29+
// TODO(b/258277572): Migrate to go/firebase-android-executors
30+
@SuppressLint("ThreadPoolCreation")
2831
public ThreadPoolEventTarget(
2932
final ThreadFactory wrappedFactory, final ThreadInitializer threadInitializer) {
3033
int poolSize = 1;

firebase-firestore/src/main/java/com/google/firebase/firestore/core/Transaction.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static com.google.firebase.firestore.util.Assert.fail;
1818
import static com.google.firebase.firestore.util.Assert.hardAssert;
1919

20+
import android.annotation.SuppressLint;
2021
import androidx.annotation.Nullable;
2122
import com.google.android.gms.tasks.Task;
2223
import com.google.android.gms.tasks.Tasks;
@@ -162,6 +163,9 @@ private static Executor createDefaultExecutor() {
162163
int maxPoolSize = corePoolSize;
163164
int keepAliveSeconds = 1;
164165
LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<>();
166+
167+
// TODO(b/258277574): Migrate to go/firebase-android-executors
168+
@SuppressLint("ThreadPoolCreation")
165169
ThreadPoolExecutor executor =
166170
new ThreadPoolExecutor(
167171
corePoolSize, maxPoolSize, keepAliveSeconds, TimeUnit.SECONDS, queue);

firebase-firestore/src/main/java/com/google/firebase/firestore/util/AsyncQueue.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import static com.google.firebase.firestore.util.Assert.fail;
1818
import static com.google.firebase.firestore.util.Assert.hardAssert;
1919

20+
import android.annotation.SuppressLint;
2021
import android.os.Handler;
2122
import android.os.Looper;
2223
import androidx.annotation.NonNull;
@@ -243,6 +244,8 @@ public Thread newThread(@NonNull Runnable runnable) {
243244
}
244245
}
245246

247+
// TODO(b/258277574): Migrate to go/firebase-android-executors
248+
@SuppressLint("ThreadPoolCreation")
246249
SynchronizedShutdownAwareExecutor() {
247250
DelayedStartFactory threadFactory = new DelayedStartFactory();
248251

firebase-inappmessaging/src/main/java/com/google/firebase/inappmessaging/internal/AbtIntegrationHelper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.inappmessaging.internal;
1616

17+
import android.annotation.SuppressLint;
1718
import androidx.annotation.VisibleForTesting;
1819
import com.google.firebase.abt.AbtException;
1920
import com.google.firebase.abt.AbtExperimentInfo;
@@ -33,7 +34,10 @@
3334
public class AbtIntegrationHelper {
3435
private final FirebaseABTesting abTesting;
3536

36-
@VisibleForTesting Executor executor = Executors.newSingleThreadExecutor();
37+
// TODO(b/258280977): Migrate to go/firebase-android-executors
38+
@SuppressLint("ThreadPoolCreation")
39+
@VisibleForTesting
40+
Executor executor = Executors.newSingleThreadExecutor();
3741

3842
@Inject
3943
public AbtIntegrationHelper(FirebaseABTesting abTesting) {

firebase-inappmessaging/src/main/java/com/google/firebase/inappmessaging/internal/DeveloperListenerManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.inappmessaging.internal;
1616

17+
import android.annotation.SuppressLint;
1718
import androidx.annotation.NonNull;
1819
import com.google.firebase.inappmessaging.FirebaseInAppMessagingClickListener;
1920
import com.google.firebase.inappmessaging.FirebaseInAppMessagingDismissListener;
@@ -56,6 +57,9 @@ public class DeveloperListenerManager {
5657
registeredImpressionListeners = new HashMap<>();
5758

5859
private static BlockingQueue<Runnable> mCallbackQueue = new LinkedBlockingQueue<>();
60+
61+
// TODO(b/258280977): Migrate to go/firebase-android-executors
62+
@SuppressLint("ThreadPoolCreation")
5963
private static final ThreadPoolExecutor CALLBACK_QUEUE_EXECUTOR =
6064
new ThreadPoolExecutor(
6165
POOL_SIZE,
@@ -182,6 +186,8 @@ static class FIAMThreadFactory implements ThreadFactory {
182186

183187
@SuppressWarnings("ThreadPriorityCheck")
184188
@Override
189+
// TODO(b/258280977): Migrate to go/firebase-android-executors
190+
@SuppressLint("ThreadPoolCreation")
185191
public Thread newThread(@NonNull Runnable r) {
186192
Thread t = new Thread(r, "FIAM-" + mNameSuffix + threadNumber.getAndIncrement());
187193
t.setDaemon(false);

firebase-installations/src/main/java/com/google/firebase/installations/FirebaseInstallations.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.installations;
1616

17+
import android.annotation.SuppressLint;
1718
import android.text.TextUtils;
1819
import androidx.annotation.GuardedBy;
1920
import androidx.annotation.NonNull;
@@ -96,6 +97,8 @@ public class FirebaseInstallations implements FirebaseInstallationsApi {
9697
private final AtomicInteger mCount = new AtomicInteger(1);
9798

9899
@Override
100+
// TODO(b/258422917): Migrate to go/firebase-android-executors
101+
@SuppressLint("ThreadPoolCreation")
99102
public Thread newThread(Runnable r) {
100103
return new Thread(
101104
r, String.format("firebase-installations-executor-%d", mCount.getAndIncrement()));
@@ -123,6 +126,8 @@ public Thread newThread(Runnable r) {
123126
+ "Please retry your last request.";
124127

125128
/** package private constructor. */
129+
// TODO(b/258422917): Migrate to go/firebase-android-executors
130+
@SuppressLint("ThreadPoolCreation")
126131
FirebaseInstallations(
127132
FirebaseApp firebaseApp, @NonNull Provider<HeartBeatController> heartBeatProvider) {
128133
this(
@@ -142,6 +147,8 @@ public Thread newThread(Runnable r) {
142147
new RandomFidGenerator());
143148
}
144149

150+
// TODO(b/258422917): Migrate to go/firebase-android-executors
151+
@SuppressLint("ThreadPoolCreation")
145152
FirebaseInstallations(
146153
ExecutorService backgroundExecutor,
147154
FirebaseApp firebaseApp,

0 commit comments

Comments
 (0)