Skip to content

refactor: Extract OTLP sender infrastructure to communication/otlp-exporter - #12868

Draft
jbachorik wants to merge 1 commit into
jb/otlp-profile-movefrom
jb/otlp-profile-exporter
Draft

jbachorik wants to merge 1 commit into
jb/otlp-profile-movefrom
jb/otlp-profile-exporter

Conversation

@jbachorik

@jbachorik jbachorik commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

What Does This Do

Moves the OTLP sender classes OtlpSender, OtlpSenderSupport, OtlpHttpSender, and OtlpGrpcSender into datadog.communication.otlp.

Adds OtlpResponse as the return type of the senders.

Adds OtlpCanonicalResourceAttributes. OtlpResourceAttributes in dd-trace-core delegates to it.

Motivation

The senders cannot move unchanged. OtlpSender.send returns RemoteApi.Response, and RemoteApi lives in dd-trace-core. A dependency from communication/otlp-exporter back to dd-trace-core would be circular. The senders therefore return the new OtlpResponse. dd-trace-core maps the response where it used RemoteApi.Response.

OtlpCanonicalResourceAttributes gives every OTLP signal the same set of resource attributes. The tracer and the profiler share one implementation, and there is one place to update it.

Additional Notes

Part of a 5-PR stack. Each PR bases on the previous one.

  1. The payload and request body move (refactor: Move OtlpPayload and OTLP request bodies to communication/otlp-exporter #12880)
  2. this PR: the sender extraction and the canonical resource attributes
  3. RecordingData reference counting (feat(profiling): Reference-count RecordingData lifecycle #12869)
  4. JFR to OTLP/P converter, profiling-otel, plus jafar 0.26.2 (feat(profiling): Add JFR to OTLP/P converter with CLI, benchmarks and validation #12870)
  5. OTLP profiles export wiring (feat(profiling): Integrate OTLP profiles export into the agent #12871)

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@dd-octo-sts

dd-octo-sts Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results
Scenario Candidate master Δ (95% CI of mean)
startup:insecure-bank:iast:Agent 14.77 s 14.66 s [-0.0%; +1.6%] (no difference)
startup:insecure-bank:tracing:Agent 13.54 s 13.59 s [-1.1%; +0.3%] (no difference)
startup:petclinic:appsec:Agent 17.12 s 17.00 s [-0.3%; +1.7%] (no difference)
startup:petclinic:iast:Agent 16.96 s 16.86 s [-0.3%; +1.5%] (no difference)
startup:petclinic:profiling:Agent 16.52 s 16.78 s [-2.6%; -0.6%] (maybe better)
startup:petclinic:sca:Agent 17.09 s 16.89 s [+0.5%; +1.9%] (maybe worse)
startup:petclinic:tracing:Agent 16.02 s 16.09 s [-1.6%; +0.6%] (no difference)

Commit: f36694bb · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

@jbachorik
jbachorik force-pushed the jb/otlp-profile-deps branch from cefdb21 to f7f988e Compare October 14, 2026 21:47
@jbachorik
jbachorik force-pushed the jb/otlp-profile-exporter branch from 31cd858 to 252a892 Compare October 14, 2026 21:47
@jbachorik
jbachorik force-pushed the jb/otlp-profile-deps branch from f7f988e to bda22da Compare October 14, 2026 21:50
@jbachorik
jbachorik force-pushed the jb/otlp-profile-exporter branch 2 times, most recently from 7c38d31 to 9403a8f Compare October 14, 2026 22:01
@jbachorik
jbachorik changed the base branch from jb/otlp-profile-deps to master October 14, 2026 22:01
@jbachorik
jbachorik force-pushed the jb/otlp-profile-exporter branch from 9403a8f to bfc7a00 Compare October 14, 2026 22:12
@jbachorik
jbachorik changed the base branch from master to jb/otlp-profile-move October 14, 2026 22:13
@jbachorik
jbachorik force-pushed the jb/otlp-profile-move branch from cb8173a to 377b8cd Compare October 14, 2026 22:31
@jbachorik
jbachorik force-pushed the jb/otlp-profile-exporter branch 2 times, most recently from 86dfa6b to ca32ced Compare October 14, 2026 22:38
@jbachorik
jbachorik force-pushed the jb/otlp-profile-move branch from 377b8cd to 73a8695 Compare October 14, 2026 22:38
@jbachorik
jbachorik force-pushed the jb/otlp-profile-exporter branch from ca32ced to d1c356d Compare October 14, 2026 22:44
…porter

Move the OTLP sender plumbing (OtlpSender, OtlpSenderSupport, the
grpc/http senders) into communication/otlp-exporter and introduce
OtlpResponse so the new module does not depend on dd-trace-core's
RemoteApi. Add OtlpCanonicalResourceAttributes as the single source
of shared OTLP resource attributes; OtlpResourceAttributes delegates
to it.

Registers the module in the muzzle filter and the agent shadow jar,
and claims ownership in CODEOWNERS.
@jbachorik
jbachorik force-pushed the jb/otlp-profile-exporter branch from d1c356d to f36694b Compare October 14, 2026 22:45
@datadog-datadog-prod-us1

This comment has been minimized.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: profiling Profiling tag: ai generated Largely based on code generated by an AI or LLM tag: no release notes Changes to exclude from release notes type: refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant