Skip to content

Commit 39199d0

Browse files
committed
move more jobs to disk write
1 parent 9017c35 commit 39199d0

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
@@ -205,7 +205,6 @@ public Task<Void> call() throws Exception {
205205

206206
// We've fatally crashed, so write the marker file that indicates a crash occurred.
207207
crashMarker.create();
208-
209208
reportingCoordinator.persistFatalEvent(
210209
ex, thread, currentSessionId, timestampSeconds);
211210

@@ -363,8 +362,11 @@ public Task<Void> then(@Nullable Boolean send) throws Exception {
363362
public Task<Void> call() throws Exception {
364363
if (!send) {
365364
Logger.getLogger().v("Deleting cached crash reports...");
366-
deleteFiles(listAppExceptionMarkerFiles());
367-
reportingCoordinator.removeAllReports();
365+
diskWriteWorker.submit(
366+
() -> {
367+
deleteFiles(listAppExceptionMarkerFiles());
368+
reportingCoordinator.removeAllReports();
369+
});
368370
unsentReportsHandled.trySetResult(null);
369371
return Tasks.forResult(null);
370372
}
@@ -512,7 +514,7 @@ boolean finalizeSessions(SettingsProvider settingsProvider) {
512514

513515
Logger.getLogger().v("Finalizing previously open sessions.");
514516
try {
515-
doCloseSessions(true, settingsProvider);
517+
doCloseSessions(true, settingsProvider, true);
516518
} catch (Exception e) {
517519
Logger.getLogger().e("Unable to finalize previously open sessions.", e);
518520
return false;
@@ -558,14 +560,15 @@ private void doOpenSession(String sessionIdentifier, Boolean isOnDemand) {
558560
}
559561

560562
void doCloseSessions(SettingsProvider settingsProvider) {
561-
doCloseSessions(false, settingsProvider);
563+
doCloseSessions(false, settingsProvider, false);
562564
}
563565

564566
/**
565-
* Not synchronized/locked. Must be executed from the single thread executor service used by this
566-
* class.
567+
*
568+
* Not synchronized/locked. Must be executed from the executor service runs tasks in serial order
567569
*/
568-
private void doCloseSessions(boolean skipCurrentSession, SettingsProvider settingsProvider) {
570+
private void doCloseSessions(
571+
boolean skipCurrentSession, SettingsProvider settingsProvider, boolean isInitProcess) {
569572
final int offset = skipCurrentSession ? 1 : 0;
570573

571574
// :TODO HW2021 this implementation can be cleaned up.
@@ -579,13 +582,15 @@ private void doCloseSessions(boolean skipCurrentSession, SettingsProvider settin
579582

580583
final String mostRecentSessionIdToClose = sortedOpenSessions.get(offset);
581584

582-
if (settingsProvider.getSettingsSync().featureFlagData.collectAnrs) {
585+
// We only collect ANR info for finalize report during initialization process
586+
if (isInitProcess && settingsProvider.getSettingsSync().featureFlagData.collectAnrs) {
583587
writeApplicationExitInfoEventIfRelevant(mostRecentSessionIdToClose);
584588
} else {
585589
Logger.getLogger().v("ANR feature disabled.");
586590
}
587591

588-
if (nativeComponent.hasCrashDataForSession(mostRecentSessionIdToClose)) {
592+
// We only collect native crash info for finalize report during initialization process
593+
if (isInitProcess && nativeComponent.hasCrashDataForSession(mostRecentSessionIdToClose)) {
589594
// We only finalize the current session if it's a Java crash, so only finalize native crash
590595
// data when we aren't including current.
591596
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)