Skip to content

Commit 5f7ac45

Browse files
authored
Timeout when blocking tasks on any thread. (#3645)
1 parent 148cc77 commit 5f7ac45

File tree

2 files changed

+4
-6
lines changed

2 files changed

+4
-6
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.util.concurrent.Executor;
5050
import java.util.concurrent.ScheduledThreadPoolExecutor;
5151
import java.util.concurrent.ThreadPoolExecutor;
52+
import java.util.concurrent.TimeoutException;
5253
import java.util.concurrent.atomic.AtomicBoolean;
5354

5455
class CrashlyticsController {
@@ -241,6 +242,8 @@ public Task<Void> then(@Nullable Settings settings) throws Exception {
241242
try {
242243
// TODO(mrober): Don't block the main thread ever for on-demand fatals.
243244
Utils.awaitEvenIfOnMainThread(handleUncaughtExceptionTask);
245+
} catch (TimeoutException e) {
246+
Logger.getLogger().e("Cannot send reports. Timed out while fetching settings.");
244247
} catch (Exception e) {
245248
Logger.getLogger().e("Error handling uncaught exception", e);
246249
// Nothing to do in this case.

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import static java.util.Objects.requireNonNull;
1818

19-
import android.os.Looper;
2019
import androidx.annotation.NonNull;
2120
import com.google.android.gms.tasks.Continuation;
2221
import com.google.android.gms.tasks.Task;
@@ -122,11 +121,7 @@ public static <T> T awaitEvenIfOnMainThread(Task<T> task)
122121
return null;
123122
});
124123

125-
if (Looper.getMainLooper() == Looper.myLooper()) {
126-
latch.await(CrashlyticsCore.DEFAULT_MAIN_HANDLER_TIMEOUT_SEC, TimeUnit.SECONDS);
127-
} else {
128-
latch.await();
129-
}
124+
latch.await(CrashlyticsCore.DEFAULT_MAIN_HANDLER_TIMEOUT_SEC, TimeUnit.SECONDS);
130125

131126
if (task.isSuccessful()) {
132127
return task.getResult();

0 commit comments

Comments
 (0)