Skip to content

Commit 3632e38

Browse files
committed
move more jobs to disk write
1 parent 0605925 commit 3632e38

File tree

2 files changed

+25
-16
lines changed

2 files changed

+25
-16
lines changed

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

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@ public Task<Void> call() throws Exception {
216216

217217
// We've fatally crashed, so write the marker file that indicates a crash occurred.
218218
crashMarker.create();
219-
220219
reportingCoordinator.persistFatalEvent(
221220
ex, thread, currentSessionId, timestampSeconds);
222221

@@ -375,8 +374,11 @@ public Task<Void> then(@Nullable Boolean send) throws Exception {
375374
public Task<Void> call() throws Exception {
376375
if (!send) {
377376
Logger.getLogger().v("Deleting cached crash reports...");
378-
deleteFiles(listAppExceptionMarkerFiles());
379-
reportingCoordinator.removeAllReports();
377+
diskWriteWorker.submit(
378+
() -> {
379+
deleteFiles(listAppExceptionMarkerFiles());
380+
reportingCoordinator.removeAllReports();
381+
});
380382
unsentReportsHandled.trySetResult(null);
381383
return Tasks.forResult(null);
382384
}
@@ -532,7 +534,7 @@ boolean finalizeSessions(SettingsProvider settingsProvider) {
532534

533535
Logger.getLogger().v("Finalizing previously open sessions.");
534536
try {
535-
doCloseSessions(true, settingsProvider);
537+
doCloseSessions(true, settingsProvider, true);
536538
} catch (Exception e) {
537539
Logger.getLogger().e("Unable to finalize previously open sessions.", e);
538540
return false;
@@ -578,14 +580,15 @@ private void doOpenSession(String sessionIdentifier, Boolean isOnDemand) {
578580
}
579581

580582
void doCloseSessions(SettingsProvider settingsProvider) {
581-
doCloseSessions(false, settingsProvider);
583+
doCloseSessions(false, settingsProvider, false);
582584
}
583585

584586
/**
585-
* Not synchronized/locked. Must be executed from the single thread executor service used by this
586-
* class.
587+
*
588+
* Not synchronized/locked. Must be executed from the executor service runs tasks in serial order
587589
*/
588-
private void doCloseSessions(boolean skipCurrentSession, SettingsProvider settingsProvider) {
590+
private void doCloseSessions(
591+
boolean skipCurrentSession, SettingsProvider settingsProvider, boolean isInitProcess) {
589592
final int offset = skipCurrentSession ? 1 : 0;
590593

591594
// :TODO HW2021 this implementation can be cleaned up.
@@ -599,13 +602,15 @@ private void doCloseSessions(boolean skipCurrentSession, SettingsProvider settin
599602

600603
final String mostRecentSessionIdToClose = sortedOpenSessions.get(offset);
601604

602-
if (settingsProvider.getSettingsSync().featureFlagData.collectAnrs) {
605+
// We only collect ANR info for finalize report during initialization process
606+
if (isInitProcess && settingsProvider.getSettingsSync().featureFlagData.collectAnrs) {
603607
writeApplicationExitInfoEventIfRelevant(mostRecentSessionIdToClose);
604608
} else {
605609
Logger.getLogger().v("ANR feature disabled.");
606610
}
607611

608-
if (nativeComponent.hasCrashDataForSession(mostRecentSessionIdToClose)) {
612+
// We only collect native crash info for finalize report during initialization process
613+
if (isInitProcess && nativeComponent.hasCrashDataForSession(mostRecentSessionIdToClose)) {
609614
// We only finalize the current session if it's a Java crash, so only finalize native crash
610615
// data when we aren't including current.
611616
finalizePreviousNativeSession(mostRecentSessionIdToClose);

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -354,12 +354,16 @@ private boolean onReportSendComplete(@NonNull Task<CrashlyticsReportWithSessionI
354354
CrashlyticsReportWithSessionId report = task.getResult();
355355
Logger.getLogger()
356356
.d("Crashlytics report successfully enqueued to DataTransport: " + report.getSessionId());
357-
File reportFile = report.getReportFile();
358-
if (reportFile.delete()) {
359-
Logger.getLogger().d("Deleted report file: " + reportFile.getPath());
360-
} else {
361-
Logger.getLogger().w("Crashlytics could not delete report file: " + reportFile.getPath());
362-
}
357+
diskWriteWorker.submit(
358+
() -> {
359+
File reportFile = report.getReportFile();
360+
if (reportFile.delete()) {
361+
Logger.getLogger().d("Deleted report file: " + reportFile.getPath());
362+
} else {
363+
Logger.getLogger()
364+
.w("Crashlytics could not delete report file: " + reportFile.getPath());
365+
}
366+
});
363367
return true;
364368
}
365369
Logger.getLogger()

0 commit comments

Comments
 (0)