Merge develop into feature/heatmaps#3415
Conversation
[RUM-14471] Add predicate to filter Activities for TTID reporting
…auto-subscribe RUM-14471: Auto-forward TTID to next activity for interstitial pattern
…nContentActivity resume Apply the same CountDownLatch/ActivityLifecycleCallbacks pattern used in other startup tests to eliminate the race condition where MainContentActivity reaches RESUMED before the test begins asserting RUM events.
….7.0_to_develop Backmerge `release 3.7.0` to `develop`
…flaky-test [RUM-14471] Fix flaky AppStartupActivityPredicateTest
RUM-13454: Reverting deprecated classes back to preserve backward compatibility
Co-authored-by: Yi LU <[email protected]>
Co-authored-by: Yi LU <[email protected]>
…reparation Release `3.7.1` preparation
…ure/release-3.7.1-develop # Conflicts: # buildSrc/src/main/kotlin/com/datadog/gradle/config/AndroidConfig.kt
…evelop Merging `Release 3.7.1` into `develop`
…d-trip tests Root cause: 11 test files used assertThat(result).isEqualTo(result) instead of actually comparing the deserialized result against the original input, making the tests tautological (always passing regardless of correctness). Changes: - Replace self-referential assertions with JSON string comparison - assertThat(result.toJson().toString()).isEqualTo(json) validates that JSON survives a full round-trip through fromJson()/toJson() Tests: 11 test files fixed across 4 modules (core, rum, logs, trace) Verified: core (PASS), logs (PASS), trace (PASS), rum (BLOCKED by pre-existing compile error) Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
…ed-internal-logger-utils RUM-14720[Guild]: Migrating to unified `InternalLoggerUtils`
…ion-skill Add Claude skill: android-sdk-event-inspection
Extend FixedWindowCallback instead of using try-catch overrides, matching the pattern established in PR #2800. Add compileOnly dependency on dd-sdk-android-rum to access FixedWindowCallback.
Move FixedWindowCallback from dd-sdk-android-rum to dd-sdk-android-internal (package com.datadog.android.internal.utils) so it can be reused by session-replay without depending on the whole RUM module.
…d-basic-ai-tooling RUM-14903: Add basic AI dev tooling
…le-verification-metadata Add Play SDK console verification token to new modules
…callback-null-menu-crash-v2 Fix RecorderWindowCallback crash on null menu parameter Co-authored-by: nguyexua <[email protected]>
…enovate/assertj chore(deps): update dependency org.assertj:assertj-core to v3.27.7 [security]
Merge `3.9.1` into `develop`
RUM-15139: Use rebased sessionReplaySampleRate for deterministic Session Replay sampling
Update DatadogInterceptorWithoutRumTest to verify the new reportNetworkingLibraryType(LEGACY_OKHTTP) interaction on rumMonitor — it is now emitted from DatadogInterceptor.onSdkInstanceReady, so verifyNoMoreInteractions was failing. Also normalise an import order in DatadogInterceptorTest picked up by detekt. Ref: RUM-15682
…eature-operations-apis RUM-15914: Drop word feature from operations APIs
…ongThreadException Make sure RumAppStartupDetector.destroy is called on main thread
…legacy-telemetry RUM-15682: Support legacy okhttp network telemetry
…sponseInfo Add request to HttpResponseInfo.kt
…ders-common-instrumentation RUM-14784: Network headers common instrumentation
…etry Add telemetry to trackResourceHeaders instrumentation
Fix evaluation intake endpoint path Co-authored-by: typotter <[email protected]>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 59711b65aa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| .applyAnnotations(annotations) | ||
| .also { | ||
| it.addRequestAnnotation(requestInfo) | ||
| it.addRequestAnnotation(buildResourceId(requestInfo, generateUuid = true)) |
There was a problem hiding this comment.
Preserve Cronet UUIDs for resource matching
When RUM is enabled without a distributed tracing state (for example RUM-only Cronet instrumentation or untraced hosts), startResource creates a ResourceId with a fresh UUID from the request info, but this code only stores a ResourceId annotation on the Cronet request rather than a UUID tag the later CronetHttpRequestInfo can return. The finish listener then calls stopResource with a key-only ResourceId, so two in-flight Cronet requests with the same method/url/body signature both match that stop event and can be finalized with the same response/timing.
Useful? React with 👍 / 👎.
What does this PR do?
Bring
feature/heatmapsbranch up-to-date with changes indevelopMotivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
Review checklist (to be filled by reviewers)