Skip to content

Merge develop into feature/continuous-profiling#3454

Merged
ambushwork merged 62 commits into
feature/continuous-profilingfrom
yl/merge-develop-into-feature-continuous-profiling
May 18, 2026
Merged

Merge develop into feature/continuous-profiling#3454
ambushwork merged 62 commits into
feature/continuous-profilingfrom
yl/merge-develop-into-feature-continuous-profiling

Conversation

@ambushwork

Copy link
Copy Markdown
Member

What does this PR do?

Merge develop into feature/continuous-profiling

Review checklist (to be filled by reviewers)

  • Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
  • Make sure you discussed the feature or bugfix with the maintaining team in an Issue
  • Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)

satween and others added 30 commits April 9, 2026 18:30
The `forge` parameter on the `fall back to timeProvider` test case
was never referenced; kotlinc with -Werror failed the build because
of the unused-parameter warning. Removing it lets the trace module's
unit tests compile cleanly.
…etry

Add telemetry to trackResourceHeaders instrumentation
Fix evaluation intake endpoint path

Co-authored-by: typotter <[email protected]>
…context-executor

Log task names for the observable queue dump in case of context executor usage
…nup-050526

Cleanup in `core` and `internal` modules
…instrumented-tests-execution-on-ci

RUM-16161: Add execution of NDK instrumented tests on CI
…ning-java-api-generation-for-non-release-builds-on-ci

RUM-15137: Don't run Java API generation task on CI for non-release builds
RUM-16123: Move broadcast-receiver dispatch off the main thread to fix ANRs
…reaming

Fix GraphQL errors extraction for streaming responses
[CHORE]Add MAUI source and regenerate apiSurface
…phql-chain-wrapper

RUM-15352: Replace GraphQL chain wrapper with request tag
Wires DatadogInterceptor and DatadogEventListener.Factory on a real OkHttpClient against a MockWebServer and asserts the RUM resource event JSON carries the timing breakdown sub-objects (dns / connect / first_byte / download). Covers the integration that unit tests cannot reach: the interceptor and the listener must agree on the ResourceId derived from the request tag for timings to reach the correct resource scope, and concurrent requests to the same URL must remain isolated.

Test cases:
- single HTTP request populates the full timing breakdown
- HTTP >= 400 still produces timings via the early-flush path in responseHeadersEnd
- a dropped socket produces a RUM error event (not a resource event) with error.resource populated
- five concurrent requests to the same URL each produce an isolated resource event with its own timing breakdown
Pin asserted URLs to the full request URL via mockServer.url(path) rather than checking only that the hostname is present. Deserialize the network-failure error event into a typed ErrorEvent model so field access is type-checked instead of navigating raw JSON. Use executor.execute in the concurrent test since the returned Future was unused and submit silently swallows uncaught exceptions.
hamorillo and others added 20 commits May 14, 2026 09:08
…o-APM paths

# Conflicts:
#	integrations/dd-sdk-android-okhttp/src/main/kotlin/com/datadog/android/okhttp/DatadogInterceptor.kt
…ture/release-3.10.0-to-develop

# Conflicts:
#	buildSrc/src/main/kotlin/com/datadog/gradle/config/AndroidConfig.kt
…to-develop

Merge release `3.10.0` to `develop`
### What does this PR do?

- Adds `kotlin.Int.takeIf(kotlin.Function1)` to
  `detekt_custom_safe_calls.yml` so the `CarrierInfoResolver`
  UNKNOWN_CARRIER_ID guard does not raise an
  `UnsafeThirdPartyFunctionCall` warning.
- Makes `must_returnCorrectDatadogContext_when_getDatadogContext`
  assert `carrierName` conditionally on the active connectivity:
  non-null for cellular networks, null otherwise.

### Motivation

Follow-up to RUM-3862: the new carrier-info resolution can
populate `carrierName` from `networkOperatorName` on emulators
with a simulated SIM, so the previous `isNull()` assertion was
no longer reliable. The new safe-call entry replaces the
`@Suppress` that would otherwise be needed for the takeIf-based
UNKNOWN_CARRIER_ID guard.

### Additional Notes

N/A

Ref: RUM-3862
RUM-15422: Support addEvent for OTel spans (logging events)
…t-versions

Bump `ktlint` and `detekt` versions
Routes Gradle dependency and plugin resolution through Datadog's internal Magic Mirror Depot (depot-read-api-java) when running in GitLab CI, to eliminate HTTP 429 rate-limits from public registries.

The change is gated behind two Gradle properties (mavenRepositoryProxy, gradlePluginProxy) that are only set in CI via .gitlab-ci.yml. Local builds with no property set are a strict no-op; the existing public registries (mavenCentral, gradlePluginPortal, google, jitpack) remain as fallbacks in every repositories block.

Follows the same approach as DataDog/dd-trace-java#9351, targeting the Magic Mirror Depot URL directly.
…decorator

RUM-15138: Add cross-product sampling rebasing for RUM-to-APM correlation
RUM-15510: Resolve dependencies through Magic Mirror Depot in CI
…ception-on-battery-level-query

RUM-16089: Catch exception on the battery level query
RUM-3862 Report carrier info on Android API 24+
Add Context.getSystemServiceAs extension

Co-authored-by: satween <[email protected]>
@ambushwork
ambushwork requested review from a team as code owners May 18, 2026 16:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 41f21163d2

ℹ️ 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".

Comment on lines +400 to +402
val effectiveTraceSampler = if (currentTraceSampler is DeterministicTraceSampler) {
SessionRebasedSampler(currentTraceSampler)
} else {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve custom deterministic samplers

When callers configure DatadogInterceptor.Builder.setTraceSampler() with a DeterministicTraceSampler instance or subclass, this type check wraps it in SessionRebasedSampler anyway, despite the new setTraceSampler contract saying custom samplers should not be rebased. In an active RUM session with a sample rate below 100%, SessionRebasedSampler.sample() can bypass the caller's sampler by constructing a fresh DeterministicTraceSampler(effectiveRate), so custom sampling decisions are changed for those requests; the same pattern appears in ApmNetworkInstrumentationConfiguration for headerPropagationOnly.

Useful? React with 👍 / 👎.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.32819% with 38 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.27%. Comparing base (c61af33) to head (41f2116).

Files with missing lines Patch % Lines
...tadog/android/core/internal/NoOpInternalSdkCore.kt 0.00% 6 Missing ⚠️
...l/net/info/BroadcastReceiverNetworkInfoProvider.kt 82.35% 0 Missing and 3 partials ⚠️
...droid/internal/telemetry/InternalTelemetryEvent.kt 0.00% 3 Missing ⚠️
...internal/net/NetworkInstrumentationTelemetryExt.kt 62.50% 1 Missing and 2 partials ⚠️
...n/com/datadog/android/okhttp/DatadogInterceptor.kt 86.96% 0 Missing and 3 partials ⚠️
...id/okhttp/internal/graphql/OkHttpGraphQLAdapter.kt 80.00% 0 Missing and 3 partials ⚠️
...dog/android/core/internal/persistence/BatchData.kt 0.00% 1 Missing and 1 partial ⚠️
...lin/com/datadog/android/rum/internal/RumFeature.kt 60.00% 0 Missing and 2 partials ⚠️
...droid/rum/internal/vitals/FrameStatesAggregator.kt 0.00% 2 Missing ⚠️
...trace/internal/net/ApmNetworkInstrumentationExt.kt 50.00% 1 Missing and 1 partial ⚠️
... and 9 more
Additional details and impacted files
@@                       Coverage Diff                        @@
##           feature/continuous-profiling    #3454      +/-   ##
================================================================
+ Coverage                         72.14%   72.27%   +0.13%     
================================================================
  Files                               971      975       +4     
  Lines                             35829    36000     +171     
  Branches                           5934     5973      +39     
================================================================
+ Hits                              25846    26017     +171     
+ Misses                             8353     8346       -7     
- Partials                           1630     1637       +7     
Files with missing lines Coverage Δ
...ore/src/main/kotlin/com/datadog/android/Datadog.kt 73.91% <ø> (ø)
.../main/kotlin/com/datadog/android/_InternalProxy.kt 60.00% <ø> (ø)
...src/main/kotlin/com/datadog/android/api/SdkCore.kt 20.00% <ø> (ø)
...tlin/com/datadog/android/api/context/DeviceInfo.kt 100.00% <ø> (ø)
...lin/com/datadog/android/api/context/NetworkInfo.kt 74.68% <ø> (ø)
.../kotlin/com/datadog/android/api/feature/Feature.kt 100.00% <ø> (ø)
...com/datadog/android/api/feature/FeatureScopeExt.kt 0.00% <ø> (ø)
.../com/datadog/android/api/feature/FeatureSdkCore.kt 33.33% <ø> (ø)
...main/kotlin/com/datadog/android/api/net/Request.kt 100.00% <ø> (ø)
...droid/core/configuration/BackPressureMitigation.kt 100.00% <ø> (ø)
... and 63 more

... and 32 files with indirect coverage changes

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

@ambushwork
ambushwork merged commit c12cd83 into feature/continuous-profiling May 18, 2026
28 checks passed
@ambushwork
ambushwork deleted the yl/merge-develop-into-feature-continuous-profiling branch May 18, 2026 18:46
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.

9 participants