Skip to content

Update Crashlytics file system to support multi-process apps #3715

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 13, 2022

Conversation

mrober
Copy link
Contributor

@mrober mrober commented May 11, 2022

Update the Crashlytics file system to support multi-process apps more elegantly.

This new file system only works on Android 28 and above. Pre-28 will continue to use to the v1 file system.

Tested manually with SDK and NDK.

Pair with @mrichards

@mrober mrober requested a review from mrichards May 11, 2022 17:53
@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 11, 2022

Coverage Report 1

Affected Products

  • firebase-crashlytics

    Overall coverage changed from ? (793415f) to 10.13% (17d1c01) by ?.

    111 individual files with coverage change

    FilenameBase (793415f)Merge (17d1c01)Diff
    AnalyticsDeferredProxy.java?0.00%?
    AnalyticsEventLogger.java?0.00%?
    AnalyticsEventReceiver.java?0.00%?
    AppData.java?56.25%?
    AutoCrashlyticsReportEncoder.java?57.86%?
    AutoValue_CrashlyticsReport.java?0.00%?
    AutoValue_CrashlyticsReportWithSessionId.java?0.00%?
    AutoValue_CrashlyticsReport_ApplicationExitInfo.java?68.09%?
    AutoValue_CrashlyticsReport_CustomAttribute.java?0.00%?
    AutoValue_CrashlyticsReport_FilesPayload.java?0.00%?
    AutoValue_CrashlyticsReport_FilesPayload_File.java?0.00%?
    AutoValue_CrashlyticsReport_Session.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Application.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Application_Organization.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Device.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_BinaryImage.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Exception.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Signal.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Application_Execution_Thread_Frame.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Device.java?0.00%?
    AutoValue_CrashlyticsReport_Session_Event_Log.java?0.00%?
    AutoValue_CrashlyticsReport_Session_OperatingSystem.java?0.00%?
    AutoValue_CrashlyticsReport_Session_User.java?0.00%?
    AutoValue_StaticSessionData.java?0.00%?
    AutoValue_StaticSessionData_AppData.java?6.00%?
    AutoValue_StaticSessionData_DeviceData.java?0.00%?
    AutoValue_StaticSessionData_OsData.java?0.00%?
    BackgroundPriorityRunnable.java?0.00%?
    BatteryState.java?0.00%?
    BlockingAnalyticsEventLogger.java?0.00%?
    BreadcrumbAnalyticsEventReceiver.java?0.00%?
    BreadcrumbHandler.java?0.00%?
    BreadcrumbSource.java?0.00%?
    BytesBackedNativeSessionFile.java?0.00%?
    CachedSettingsIo.java?0.00%?
    CLSUUID.java?0.00%?
    CommonUtils.java?0.00%?
    CrashlyticsAnalyticsListener.java?0.00%?
    CrashlyticsBackgroundWorker.java?56.25%?
    CrashlyticsController.java?18.29%?
    CrashlyticsCore.java?0.63%?
    CrashlyticsFileMarker.java?30.77%?
    CrashlyticsLifecycleEvents.java?0.00%?
    CrashlyticsNativeComponent.java?0.00%?
    CrashlyticsNativeComponentDeferredProxy.java?25.81%?
    CrashlyticsOriginAnalyticsEventLogger.java?0.00%?
    CrashlyticsRegistrar.java?0.00%?
    CrashlyticsReport.java?2.83%?
    CrashlyticsReportDataCapture.java?3.98%?
    CrashlyticsReportJsonTransform.java?1.24%?
    CrashlyticsReportPersistence.java?3.19%?
    CrashlyticsReportWithSessionId.java?0.00%?
    CrashlyticsUncaughtExceptionHandler.java?0.00%?
    CurrentTimeProvider.java?0.00%?
    CustomKeysAndValues.java?0.00%?
    DataCollectionArbiter.java?0.00%?
    DataTransportCrashlyticsReportSender.java?48.28%?
    DefaultSettingsJsonTransform.java?0.00%?
    DefaultSettingsSpiCall.java?0.00%?
    DeliveryMechanism.java?90.91%?
    DevelopmentPlatformProvider.java?0.00%?
    DisabledBreadcrumbSource.java?0.00%?
    ExecutorUtils.java?0.00%?
    FileBackedNativeSessionFile.java?0.00%?
    FileLogStore.java?0.00%?
    FileStore.java?36.36%?
    FirebaseCrashlytics.java?0.00%?
    HttpGetRequest.java?0.00%?
    HttpRequestFactory.java?0.00%?
    HttpResponse.java?0.00%?
    IdManager.java?3.13%?
    ImmutableList.java?0.00%?
    InstallerPackageNameProvider.java?0.00%?
    InstallIdProvider.java?0.00%?
    KeysMap.java?24.32%?
    LogFileManager.java?60.71%?
    Logger.java?40.54%?
    MetaDataStore.java?20.29%?
    MiddleOutFallbackStrategy.java?0.00%?
    MiddleOutStrategy.java?0.00%?
    NativeSessionFile.java?0.00%?
    NativeSessionFileGzipper.java?0.00%?
    NativeSessionFileProvider.java?0.00%?
    OnDemandCounter.java?0.00%?
    QueueFile.java?0.00%?
    QueueFileLogStore.java?7.58%?
    RemoveRepeatsStrategy.java?0.00%?
    ReportQueue.java?0.00%?
    ResponseParser.java?0.00%?
    SessionReportingCoordinator.java?44.76%?
    Settings.java?94.74%?
    SettingsCacheBehavior.java?0.00%?
    SettingsController.java?0.00%?
    SettingsJsonConstants.java?0.00%?
    SettingsJsonParser.java?0.00%?
    SettingsJsonTransform.java?0.00%?
    SettingsProvider.java?0.00%?
    SettingsRequest.java?0.00%?
    SettingsSpiCall.java?0.00%?
    SettingsV3JsonTransform.java?0.00%?
    StackTraceTrimmingStrategy.java?0.00%?
    StaticSessionData.java?12.50%?
    SystemCurrentTimeProvider.java?0.00%?
    TrimmedThrowableData.java?0.00%?
    UnavailableAnalyticsEventLogger.java?0.00%?
    UserMetadata.java?25.93%?
    Utils.java?0.00%?

Test Logs

Notes

  • Commit (17d1c01) is created by Prow via merging PR base commit (793415f) and head commit (1623773).
  • Run gradle <product>:checkCoverage to produce HTML coverage reports locally. After gradle commands finished, report files can be found under <product-build-dir>/reports/jacoco/.

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/OuQXxp0J2C.html

Copy link
Contributor

@mrichards mrichards left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One nit.

new File(rootDir.getParent(), ".com.google.firebase.crashlytics-ndk")
};
/** Clean up files from previous file systems. */
public void cleanupPreviousFileSystems() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this implementation. Very clean. :)

@mrober
Copy link
Contributor Author

mrober commented May 12, 2022

/retest

2 similar comments
@mrober
Copy link
Contributor Author

mrober commented May 13, 2022

/retest

@mrober
Copy link
Contributor Author

mrober commented May 13, 2022

/retest

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 13, 2022

Size Report 1

Affected Products

  • base

    TypeBase (793415f)Merge (17d1c01)Diff
    apk (aggressive)?8.39 kB? (?)
    apk (release)?8.65 kB? (?)
  • firebase-annotations

    TypeBase (793415f)Merge (17d1c01)Diff
    apk (aggressive)?8.39 kB? (?)
    apk (release)?8.88 kB? (?)
  • firebase-common

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?48.5 kB? (?)
    apk (aggressive)?84.6 kB? (?)
    apk (release)?681 kB? (?)
  • firebase-components

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?41.4 kB? (?)
    apk (aggressive)?8.68 kB? (?)
    apk (release)?29.5 kB? (?)
  • firebase-crashlytics

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?341 kB? (?)
    apk (aggressive)?216 kB? (?)
    apk (release)?892 kB? (?)
  • firebase-encoders

    TypeBase (793415f)Merge (17d1c01)Diff
    apk (aggressive)?8.68 kB? (?)
    apk (release)?15.3 kB? (?)
  • firebase-encoders-json

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?10.5 kB? (?)
    apk (aggressive)?8.68 kB? (?)
    apk (release)?20.1 kB? (?)
  • firebase-encoders-proto

    TypeBase (793415f)Merge (17d1c01)Diff
    apk (aggressive)?8.68 kB? (?)
    apk (release)?21.6 kB? (?)
  • firebase-installations

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?55.0 kB? (?)
    apk (aggressive)?86.1 kB? (?)
    apk (release)?703 kB? (?)
  • firebase-installations-interop

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?8.34 kB? (?)
    apk (aggressive)?65.0 kB? (?)
    apk (release)?651 kB? (?)
  • transport-api

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?6.57 kB? (?)
    apk (aggressive)?8.68 kB? (?)
    apk (release)?14.9 kB? (?)
  • transport-backend-cct

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?53.5 kB? (?)
    apk (aggressive)?58.1 kB? (?)
    apk (release)?105 kB? (?)
  • transport-runtime

    TypeBase (793415f)Merge (17d1c01)Diff
    aar?178 kB? (?)
    apk (aggressive)?43.9 kB? (?)
    apk (release)?82.7 kB? (?)

Test Logs

Notes

  • Commit (17d1c01) is created by Prow via merging PR base commit (793415f) and head commit (1623773).

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/ejedLSTyI5.html

@mrober
Copy link
Contributor Author

mrober commented May 13, 2022

/test check-changed

@mrober mrober merged commit 70124f4 into master May 13, 2022
@mrober mrober deleted the multiprocess branch May 13, 2022 18:50
@firebase firebase locked and limited conversation to collaborators Jun 13, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants