DataDog / dd-sdk-android

Datadog SDK for Android (Compatible with Kotlin and Java)
Apache License 2.0
141 stars 57 forks source link

RUM-4098: Use the datastore for Session Replay resources #2041

Closed jonathanmos closed 3 weeks ago

jonathanmos commented 2 months ago

What does this PR do?

Use the datastore from Session Replay, so that resource hashes are persisted between sessions.

Motivation

The second part of the effort to persist bitmap hashes between sessions.

Additional Notes

Anything else we should know when reviewing?

Review checklist (to be filled by reviewers)

codecov-commenter commented 2 months ago

Codecov Report

Attention: Patch coverage is 87.50000% with 13 lines in your changes missing coverage. Please review.

Project coverage is 83.22%. Comparing base (d8d0838) to head (fa9f3b1). Report is 1 commits behind head on develop.

:exclamation: Current head fa9f3b1 differs from pull request most recent head 4641fbf

Please upload reports for the commit 4641fbf to get more accurate results.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## develop #2041 +/- ## ============================================ + Coverage 69.56% 83.22% +13.67% ============================================ Files 715 511 -204 Lines 26553 18119 -8434 Branches 4452 2719 -1733 ============================================ - Hits 18469 15079 -3390 + Misses 6871 2293 -4578 + Partials 1213 747 -466 ``` | [Files](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | Coverage Δ | | |---|---|---| | [...rnal/persistence/datastore/DataStoreFileHandler.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2FDataStoreFileHandler.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9EYXRhU3RvcmVGaWxlSGFuZGxlci5rdA==) | `100.00% <100.00%> (ø)` | | | [...ernal/persistence/datastore/DatastoreFileReader.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2FDatastoreFileReader.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9EYXRhc3RvcmVGaWxlUmVhZGVyLmt0) | `95.56% <ø> (ø)` | | | [...rnal/persistence/datastore/NoOpDataStoreHandler.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fcore%2Finternal%2Fpersistence%2Fdatastore%2FNoOpDataStoreHandler.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9jb3JlL2ludGVybmFsL3BlcnNpc3RlbmNlL2RhdGFzdG9yZS9Ob09wRGF0YVN0b3JlSGFuZGxlci5rdA==) | `100.00% <ø> (ø)` | | | [.../sessionreplay/internal/DefaultRecorderProvider.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2FDefaultRecorderProvider.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9EZWZhdWx0UmVjb3JkZXJQcm92aWRlci5rdA==) | `93.10% <100.00%> (+0.06%)` | :arrow_up: | | [...oid/sessionreplay/internal/SessionReplayFeature.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2FSessionReplayFeature.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9TZXNzaW9uUmVwbGF5RmVhdHVyZS5rdA==) | `100.00% <100.00%> (ø)` | | | [...replay/internal/processor/RecordedDataProcessor.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Fprocessor%2FRecordedDataProcessor.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9wcm9jZXNzb3IvUmVjb3JkZWREYXRhUHJvY2Vzc29yLmt0) | `97.67% <100.00%> (+0.17%)` | :arrow_up: | | [...nreplay/internal/recorder/SessionReplayRecorder.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Frecorder%2FSessionReplayRecorder.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZWNvcmRlci9TZXNzaW9uUmVwbGF5UmVjb3JkZXIua3Q=) | `96.69% <100.00%> (-0.11%)` | :arrow_down: | | [...ernal/resources/ResourceHashesEntryDeserializer.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Fresources%2FResourceHashesEntryDeserializer.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZXNvdXJjZXMvUmVzb3VyY2VIYXNoZXNFbnRyeURlc2VyaWFsaXplci5rdA==) | `100.00% <100.00%> (ø)` | | | [...nternal/resources/ResourceHashesEntrySerializer.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=features%2Fdd-sdk-android-session-replay%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fsessionreplay%2Finternal%2Fresources%2FResourceHashesEntrySerializer.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZmVhdHVyZXMvZGQtc2RrLWFuZHJvaWQtc2Vzc2lvbi1yZXBsYXkvc3JjL21haW4va290bGluL2NvbS9kYXRhZG9nL2FuZHJvaWQvc2Vzc2lvbnJlcGxheS9pbnRlcm5hbC9yZXNvdXJjZXMvUmVzb3VyY2VIYXNoZXNFbnRyeVNlcmlhbGl6ZXIua3Q=) | `50.00% <50.00%> (ø)` | | | [.../android/api/storage/datastore/DataStoreHandler.kt](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree&filepath=dd-sdk-android-core%2Fsrc%2Fmain%2Fkotlin%2Fcom%2Fdatadog%2Fandroid%2Fapi%2Fstorage%2Fdatastore%2FDataStoreHandler.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog#diff-ZGQtc2RrLWFuZHJvaWQtY29yZS9zcmMvbWFpbi9rb3RsaW4vY29tL2RhdGFkb2cvYW5kcm9pZC9hcGkvc3RvcmFnZS9kYXRhc3RvcmUvRGF0YVN0b3JlSGFuZGxlci5rdA==) | `20.00% <0.00%> (-13.33%)` | :arrow_down: | | ... and [2 more](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog) | | ... and [265 files with indirect coverage changes](https://app.codecov.io/gh/DataDog/dd-sdk-android/pull/2041/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=DataDog)