Skip to content

Commit 1a499ee

Browse files
committed
revert timeout change
1 parent faa2a55 commit 1a499ee

File tree

3 files changed

+35
-58
lines changed

3 files changed

+35
-58
lines changed

firebase-crashlytics/src/androidTest/java/com/google/firebase/crashlytics/internal/settings/DefaultSettingsControllerTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import com.google.firebase.crashlytics.internal.common.InstallIdProvider.InstallIds;
3535
import com.google.firebase.crashlytics.internal.concurrency.CrashlyticsWorkers;
3636
import java.util.concurrent.TimeUnit;
37-
import java.util.concurrent.TimeoutException;
3837
import org.json.JSONObject;
3938

4039
public class DefaultSettingsControllerTest extends CrashlyticsTestCase {
@@ -367,14 +366,13 @@ public void testNoAvailableSettingsLoad() throws Exception {
367366
assertNotNull(controller.getSettingsSync());
368367
assertFalse(controller.getSettingsAsync().isComplete());
369368

370-
dataCollectionPermission.trySetException(new TimeoutException("Timeout"));
371-
crashlyticsWorkers.common.await();
369+
dataCollectionPermission.trySetResult(null);
372370
await(loadFinished);
373371

374372
assertNotNull(controller.getSettingsSync());
375-
assertTrue(controller.getSettingsAsync().isComplete());
373+
assertFalse(controller.getSettingsAsync().isComplete());
376374

377-
verify(mockSettingsSpiCall, times(0)).invoke(any(SettingsRequest.class), eq(true));
375+
verify(mockSettingsSpiCall).invoke(any(SettingsRequest.class), eq(true));
378376
verify(mockCachedSettingsIo, times(2)).readCachedSettings();
379377
verifyNoMoreInteractions(mockSettingsJsonParser);
380378
verify(mockCurrentTimeProvider).getCurrentTimeMillis();

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/concurrency/CrashlyticsTasks.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,7 @@
2121
import com.google.android.gms.tasks.Task;
2222
import com.google.android.gms.tasks.TaskCompletionSource;
2323
import com.google.android.gms.tasks.Tasks;
24-
import com.google.firebase.crashlytics.internal.Logger;
25-
import java.util.Timer;
26-
import java.util.TimerTask;
2724
import java.util.concurrent.Executor;
28-
import java.util.concurrent.TimeoutException;
2925
import java.util.concurrent.atomic.AtomicBoolean;
3026

3127
/**
@@ -45,8 +41,7 @@ public final class CrashlyticsTasks {
4541
public static <T> Task<T> race(Task<T> task1, Task<T> task2) {
4642
CancellationTokenSource cancellation = new CancellationTokenSource();
4743
TaskCompletionSource<T> result = new TaskCompletionSource<>(cancellation.getToken());
48-
Timer timer = new Timer();
49-
Logger.getLogger().d("Race starts " + Thread.currentThread());
44+
5045
AtomicBoolean otherTaskCancelled = new AtomicBoolean(false);
5146

5247
Continuation<T, Task<Void>> continuation =
@@ -67,17 +62,6 @@ public static <T> Task<T> race(Task<T> task1, Task<T> task2) {
6762
task1.continueWithTask(DIRECT, continuation);
6863
task2.continueWithTask(DIRECT, continuation);
6964

70-
timer.schedule(
71-
new TimerTask() {
72-
@Override
73-
public void run() {
74-
if (!result.getTask().isComplete()) {
75-
Logger.getLogger().d("Race gets timed out " + Thread.currentThread());
76-
result.trySetException(new TimeoutException("Race result gets timed out"));
77-
}
78-
}
79-
},
80-
10 * 1000);
8165
return result.getTask();
8266
}
8367

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/settings/SettingsController.java

Lines changed: 31 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
import android.content.Context;
1919
import android.content.SharedPreferences;
2020
import androidx.annotation.NonNull;
21-
import com.google.android.gms.tasks.Continuation;
21+
import androidx.annotation.Nullable;
22+
import com.google.android.gms.tasks.SuccessContinuation;
2223
import com.google.android.gms.tasks.Task;
2324
import com.google.android.gms.tasks.TaskCompletionSource;
2425
import com.google.android.gms.tasks.Tasks;
@@ -190,44 +191,38 @@ public Task<Void> loadSettingsData(
190191
// TODO(mrober): Refactor to call worker directly, not expose executor.
191192
return dataCollectionArbiter
192193
.waitForDataCollectionPermission()
193-
.continueWithTask(
194+
.onSuccessTask(
194195
crashlyticsWorkers.common,
195-
new Continuation<Void, Task<Void>>() {
196+
new SuccessContinuation<Void, Void>() {
197+
@NonNull
196198
@Override
197-
public Task<Void> then(@NonNull Task<Void> task) throws Exception {
198-
if (task.isSuccessful()) {
199-
final boolean dataCollectionToken = true;
200-
Future<JSONObject> settingsFuture =
201-
crashlyticsWorkers
202-
.network
203-
.getExecutor()
204-
.submit(
205-
() -> settingsSpiCall.invoke(settingsRequest, dataCollectionToken));
206-
// TODO(mrober): Should we add a timeout here, or let the entire init timeout?
207-
JSONObject settingsJson = settingsFuture.get();
208-
209-
if (settingsJson != null) {
210-
final Settings fetchedSettings =
211-
settingsJsonParser.parseSettingsJson(settingsJson);
212-
cachedSettingsIo.writeCachedSettings(
213-
fetchedSettings.expiresAtMillis, settingsJson);
214-
logSettings(settingsJson, "Loaded settings: ");
215-
216-
setStoredBuildInstanceIdentifier(settingsRequest.instanceId);
217-
218-
// Update the regular settings.
219-
settings.set(fetchedSettings);
220-
221-
// Signal the Task that we have a new valid settings
222-
settingsTask.get().trySetResult(fetchedSettings);
223-
return Tasks.forResult(null);
224-
}
199+
public Task<Void> then(@Nullable Void aVoid) throws Exception {
200+
// Waited for data collection permission, so this is safe.
201+
final boolean dataCollectionToken = true;
202+
Future<JSONObject> settingsFuture =
203+
crashlyticsWorkers
204+
.network
205+
.getExecutor()
206+
.submit(() -> settingsSpiCall.invoke(settingsRequest, dataCollectionToken));
207+
// TODO(mrober): Should we add a timeout here, or let the entire init timeout?
208+
JSONObject settingsJson = settingsFuture.get();
209+
210+
if (settingsJson != null) {
211+
final Settings fetchedSettings =
212+
settingsJsonParser.parseSettingsJson(settingsJson);
213+
cachedSettingsIo.writeCachedSettings(
214+
fetchedSettings.expiresAtMillis, settingsJson);
215+
logSettings(settingsJson, "Loaded settings: ");
216+
217+
setStoredBuildInstanceIdentifier(settingsRequest.instanceId);
218+
219+
// Update the regular settings.
220+
settings.set(fetchedSettings);
221+
222+
// Signal the Task that we have a new valid settings
223+
settingsTask.get().trySetResult(fetchedSettings);
225224
}
226-
Logger.getLogger()
227-
.d(
228-
"waitForDataCollectionPermission failed, set setting to null "
229-
+ Thread.currentThread());
230-
settingsTask.get().trySetResult(null);
225+
231226
return Tasks.forResult(null);
232227
}
233228
});

0 commit comments

Comments
 (0)