Skip to content

Revert "RUM-6171 use FileObserver to limit calls to filesystem"#3124

Merged
aleksandr-gringauz merged 1 commit intodevelopfrom
revert-2720-xgouchet/RUM-6171/FileObserver
Jan 13, 2026
Merged

Revert "RUM-6171 use FileObserver to limit calls to filesystem"#3124
aleksandr-gringauz merged 1 commit intodevelopfrom
revert-2720-xgouchet/RUM-6171/FileObserver

Conversation

@aleksandr-gringauz
Copy link
Contributor

@aleksandr-gringauz aleksandr-gringauz commented Jan 13, 2026

RUM integration tests in instrumented/integration started failing with the following stacktrace:

java.lang.ClassCastException: com.google.gson.JsonNull cannot be cast to com.google.gson.JsonObject
at com.datadog.android.sdk.integration.rum.RumTestUtilsKt.rumPayloadToJsonList(RumTestUtils.kt:23)
at com.datadog.android.sdk.integration.rum.RumTest.verifyExpectedEvents(RumTest.kt:44)
at com.datadog.android.sdk.integration.rum.ConsentPendingGrantedActivityTrackingTest$verifyRumEvents$1.invoke(ConsentPendingGrantedActivityTrackingTest.kt:43)
at com.datadog.android.sdk.integration.rum.ConsentPendingGrantedActivityTrackingTest$verifyRumEvents$1.invoke(ConsentPendingGrantedActivityTrackingTest.kt:45)
at com.datadog.tools.unit.ConditionWatcher.doWait(ConditionWatcher.kt:42)
at com.datadog.android.sdk.integration.rum.ConsentPendingGrantedActivityTrackingTest.verifyRumEvents(ConsentPendingGrantedActivityTrackingTest.kt:45)

It can be reproduced locally if you run all the tests in rum folder.

This is most likely caused by #2720. I suggest reverting it and think about the proper fix later in future PRs.

I added some logging to better understand the problem https://github.com/DataDog/dd-sdk-android/tree/aleksandr-gringauz/file-observer-concurrency

2026-01-13 14:17:08.608 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  DataUploadRunnable.run
2026-01-13 14:17:08.609 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  DataUploadRunnable.handleNextBatch
2026-01-13 14:17:08.610 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  DataUploadRunnable.consumeBatch /data/user/0/com.datadog.android.sdk.integration/cache/datadog-a588c719ae523df29023a954180d678b65b9f6c2469b68ce31c1d2a13674af36/rum-v2/1768310215860
2026-01-13 14:17:08.626 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  confirmBatchRead /data/user/0/com.datadog.android.sdk.integration/cache/datadog-a588c719ae523df29023a954180d678b65b9f6c2469b68ce31c1d2a13674af36/rum-v2/1768310215860
2026-01-13 14:17:08.626 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  deleteBatchFile 1768310215860
2026-01-13 14:17:08.627 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  DataUploadRunnable.handleNextBatch
2026-01-13 14:17:08.627 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  /data/user/0/com.datadog.android.sdk.integration/cache/datadog-a588c719ae523df29023a954180d678b65b9f6c2469b68ce31c1d2a13674af36/rum-v2/1768310215860 batchData.isEmpty()
2026-01-13 14:17:08.627 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  DataUploadRunnable.consumeBatch /data/user/0/com.datadog.android.sdk.integration/cache/datadog-a588c719ae523df29023a954180d678b65b9f6c2469b68ce31c1d2a13674af36/rum-v2/1768310215860
2026-01-13 14:17:08.627 23340-23410 WAHAHA                  com.datadog.android.sdk.integration  W  empty
2026-01-13 14:17:08.628 23340-23378 WAHAHA                  com.datadog.android.sdk.integration  W  removing 1768310215860

The following happens:

  1. DatadogUploadRunnable consumes the batch, sends it and confirms that it read it here.
  2. The batch file gets deleted here.
  3. knownFiles in BatchFileOrchestrator isn't immediately updated, because FileObserver works asynchronously.
  4. DatadogUploadRunnable reads next batch. It tries to read the same batch file as before, because the state in BatchFileOrchestrator isn't updated yet. We end up here.
  5. However the batch file is deleted, that is why DatadogUploadRunnable sends the request body with an empty batch. It leads to the exception in the test.

@datadog-official
Copy link

datadog-official bot commented Jan 13, 2026

🎯 Code Coverage
Patch Coverage: 91.89%
Overall Coverage: 64.70% (-1.21%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: bade6c9 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@aleksandr-gringauz aleksandr-gringauz marked this pull request as ready for review January 13, 2026 14:23
@aleksandr-gringauz aleksandr-gringauz requested a review from a team as a code owner January 13, 2026 14:23
@codecov-commenter
Copy link

Codecov Report

❌ Patch coverage is 92.10526% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.74%. Comparing base (53a83b8) to head (bade6c9).

Files with missing lines Patch % Lines
...al/persistence/file/batch/BatchFileOrchestrator.kt 92.11% 1 Missing and 2 partials ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #3124      +/-   ##
===========================================
- Coverage    70.78%   70.74%   -0.04%     
===========================================
  Files          893      893              
  Lines        33014    33000      -14     
  Branches      5554     5549       -5     
===========================================
- Hits         23366    23343      -23     
+ Misses        8107     8101       -6     
- Partials      1541     1556      +15     
Files with missing lines Coverage Δ
...al/persistence/file/batch/BatchFileOrchestrator.kt 92.90% <92.11%> (-1.77%) ⬇️

... and 39 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@aleksandr-gringauz aleksandr-gringauz merged commit b345b6e into develop Jan 13, 2026
27 checks passed
@aleksandr-gringauz aleksandr-gringauz deleted the revert-2720-xgouchet/RUM-6171/FileObserver branch January 13, 2026 15:20
@kikoveiga kikoveiga mentioned this pull request Feb 4, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants