Skip to content

Add OtlpWriter for OTLP traces export - #11200

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 19 commits into
masterfrom
mtoff/otlp-writer
Apr 30, 2026
Merged

Add OtlpWriter for OTLP traces export #11200
gh-worker-dd-mergequeue-cf854d[bot] merged 19 commits into
masterfrom
mtoff/otlp-writer

Conversation

@mtoffl01

@mtoffl01mtoffl01 commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

What Does This Do

Adds a new OtlpWriter that sends Datadog traces via OTLP -- HTTP/protobuf (default) or gRPC -- to a collector endpoint. This new writer type is auto-selected when OTEL_TRACES_EXPORTER=otlp is set and is otherwise off by default.

New components:

  • OtlpWriter + OtlpPayloadDispatcher
  • OTLP branch in WriterFactory driven by Config.getOtlpTraces*() getters
  • Config plumbing for traceOtelExporterOtlpWriter selection

Motivation

This PR builds on existing work that serializes Datadog spans in OTLP format by providing an "Otlp" writer mechanism for forwarding the data to a configurable endpoint.

Additional Notes

Much of the code was AI generated but based on a relatively detailed plan that I pre-approved before starting the code generation. This PR passes system tests: DataDog/system-tests#6819

Contributor Checklist

Jira ticket: [PROJ-IDENT]

Note:Once your PR is ready to merge, add it to the merge queue by commenting /merge./merge -c cancels the queue request. /merge -f --reason "reason" skips all merge queue checks; please use this judiciously, as some checks do not run at the PR-level. For more information, see this doc.

@pr-commenter

pr-commenterBot commented Apr 24, 2026

Copy link
Copy Markdown

Benchmarks

Startup

Parameters

BaselineCandidate
baseline_or_candidatebaselinecandidate
git_branchmastermtoff/otlp-writer
git_commit_date17773868371777494220
git_commit_shae6cac6496954d7
release_version1.62.0-SNAPSHOT~e6cac64dfd1.62.0-SNAPSHOT~96954d7d95
See matching parameters
BaselineCandidate
applicationinsecure-bankinsecure-bank
ci_job_date17774962141777496214
ci_job_id16442814071644281407
ci_pipeline_id110567036110567036
cpu_modelIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHzIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_versionLinux runner-zfyrx7zua-project-304-concurrent-0-ii05srvb 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxLinux runner-zfyrx7zua-project-304-concurrent-0-ii05srvb 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
moduleAgentAgent
parentNoneNone

Summary

Found 1 performance improvements and 0 performance regressions! Performance is the same for 62 metrics, 8 unstable metrics.

scenarioΔ mean execution_timecandidate mean execution_timebaseline mean execution_time
scenario:startup:insecure-bank:iast:Remote Configbetter
[-34.496µs; -13.938µs] or [-6.340%; -2.562%]
519.849µs544.066µs
Startup time reports for insecure-bank
gantt
title insecure-bank - global startup overhead: candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.065 s) : 0, 1065416
Total [baseline] (8.869 s) : 0, 8868535
Agent [candidate] (1.063 s) : 0, 1062618
Total [candidate] (8.841 s) : 0, 8841085
section iast
Agent [baseline] (1.252 s) : 0, 1252425
Total [baseline] (9.572 s) : 0, 9572141
Agent [candidate] (1.244 s) : 0, 1243831
Total [candidate] (9.508 s) : 0, 9508034
Loading
  • baseline results
ModuleVariantDurationΔ tracing
Agenttracing1.065 s-
Agentiast1.252 s187.009 ms (17.6%)
Totaltracing8.869 s-
Totaliast9.572 s703.606 ms (7.9%)
  • candidate results
ModuleVariantDurationΔ tracing
Agenttracing1.063 s-
Agentiast1.244 s181.213 ms (17.1%)
Totaltracing8.841 s-
Totaliast9.508 s666.949 ms (7.5%)
gantt
title insecure-bank - break down per module: candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.23 ms) : 0, 1230
crashtracking [candidate] (1.228 ms) : 0, 1228
BytebuddyAgent [baseline] (635.696 ms) : 0, 635696
BytebuddyAgent [candidate] (634.742 ms) : 0, 634742
AgentMeter [baseline] (29.506 ms) : 0, 29506
AgentMeter [candidate] (29.349 ms) : 0, 29349
GlobalTracer [baseline] (249.993 ms) : 0, 249993
GlobalTracer [candidate] (248.352 ms) : 0, 248352
AppSec [baseline] (33.154 ms) : 0, 33154
AppSec [candidate] (32.814 ms) : 0, 32814
Debugger [baseline] (60.175 ms) : 0, 60175
Debugger [candidate] (59.881 ms) : 0, 59881
Remote Config [baseline] (600.507 µs) : 0, 601
Remote Config [candidate] (599.823 µs) : 0, 600
Telemetry [baseline] (8.391 ms) : 0, 8391
Telemetry [candidate] (12.876 ms) : 0, 12876
Flare Poller [baseline] (10.586 ms) : 0, 10586
Flare Poller [candidate] (6.83 ms) : 0, 6830
section iast
crashtracking [baseline] (1.237 ms) : 0, 1237
crashtracking [candidate] (1.219 ms) : 0, 1219
BytebuddyAgent [baseline] (831.905 ms) : 0, 831905
BytebuddyAgent [candidate] (823.437 ms) : 0, 823437
AgentMeter [baseline] (11.383 ms) : 0, 11383
AgentMeter [candidate] (11.305 ms) : 0, 11305
GlobalTracer [baseline] (237.796 ms) : 0, 237796
GlobalTracer [candidate] (237.853 ms) : 0, 237853
IAST [baseline] (29.122 ms) : 0, 29122
IAST [candidate] (28.331 ms) : 0, 28331
AppSec [baseline] (30.542 ms) : 0, 30542
AppSec [candidate] (31.378 ms) : 0, 31378
Debugger [baseline] (62.432 ms) : 0, 62432
Debugger [candidate] (62.502 ms) : 0, 62502
Remote Config [baseline] (544.066 µs) : 0, 544
Remote Config [candidate] (519.849 µs) : 0, 520
Telemetry [baseline] (7.868 ms) : 0, 7868
Telemetry [candidate] (7.923 ms) : 0, 7923
Flare Poller [baseline] (3.365 ms) : 0, 3365
Flare Poller [candidate] (3.376 ms) : 0, 3376
Loading
Startup time reports for petclinic
gantt
title petclinic - global startup overhead: candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.066 s) : 0, 1066074
Total [baseline] (11.121 s) : 0, 11121337
Agent [candidate] (1.065 s) : 0, 1065381
Total [candidate] (11.021 s) : 0, 11020853
section appsec
Agent [baseline] (1.267 s) : 0, 1266976
Total [baseline] (11.03 s) : 0, 11029960
Agent [candidate] (1.266 s) : 0, 1265815
Total [candidate] (11.092 s) : 0, 11091834
section iast
Agent [baseline] (1.246 s) : 0, 1246261
Total [baseline] (11.27 s) : 0, 11270261
Agent [candidate] (1.246 s) : 0, 1246115
Total [candidate] (11.304 s) : 0, 11303950
section profiling
Agent [baseline] (1.191 s) : 0, 1190647
Total [baseline] (11.032 s) : 0, 11031617
Agent [candidate] (1.195 s) : 0, 1194620
Total [candidate] (10.998 s) : 0, 10998036
Loading
  • baseline results
ModuleVariantDurationΔ tracing
Agenttracing1.066 s-
Agentappsec1.267 s200.903 ms (18.8%)
Agentiast1.246 s180.187 ms (16.9%)
Agentprofiling1.191 s124.573 ms (11.7%)
Totaltracing11.121 s-
Totalappsec11.03 s-91.378 ms (-0.8%)
Totaliast11.27 s148.924 ms (1.3%)
Totalprofiling11.032 s-89.72 ms (-0.8%)
  • candidate results
ModuleVariantDurationΔ tracing
Agenttracing1.065 s-
Agentappsec1.266 s200.434 ms (18.8%)
Agentiast1.246 s180.734 ms (17.0%)
Agentprofiling1.195 s129.239 ms (12.1%)
Totaltracing11.021 s-
Totalappsec11.092 s70.98 ms (0.6%)
Totaliast11.304 s283.097 ms (2.6%)
Totalprofiling10.998 s-22.817 ms (-0.2%)
gantt
title petclinic - break down per module: candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.232 ms) : 0, 1232
crashtracking [candidate] (1.229 ms) : 0, 1229
BytebuddyAgent [baseline] (637.078 ms) : 0, 637078
BytebuddyAgent [candidate] (636.015 ms) : 0, 636015
AgentMeter [baseline] (29.569 ms) : 0, 29569
AgentMeter [candidate] (29.53 ms) : 0, 29530
GlobalTracer [baseline] (249.512 ms) : 0, 249512
GlobalTracer [candidate] (248.607 ms) : 0, 248607
AppSec [baseline] (32.778 ms) : 0, 32778
AppSec [candidate] (32.823 ms) : 0, 32823
Debugger [baseline] (60.861 ms) : 0, 60861
Debugger [candidate] (60.781 ms) : 0, 60781
Remote Config [baseline] (607.716 µs) : 0, 608
Remote Config [candidate] (603.551 µs) : 0, 604
Telemetry [baseline] (8.459 ms) : 0, 8459
Telemetry [candidate] (8.395 ms) : 0, 8395
Flare Poller [baseline] (9.898 ms) : 0, 9898
Flare Poller [candidate] (11.402 ms) : 0, 11402
section appsec
crashtracking [baseline] (1.238 ms) : 0, 1238
crashtracking [candidate] (1.234 ms) : 0, 1234
BytebuddyAgent [baseline] (675.668 ms) : 0, 675668
BytebuddyAgent [candidate] (675.378 ms) : 0, 675378
AgentMeter [baseline] (12.305 ms) : 0, 12305
AgentMeter [candidate] (12.207 ms) : 0, 12207
GlobalTracer [baseline] (249.91 ms) : 0, 249910
GlobalTracer [candidate] (249.37 ms) : 0, 249370
IAST [baseline] (24.849 ms) : 0, 24849
IAST [candidate] (24.659 ms) : 0, 24659
AppSec [baseline] (186.048 ms) : 0, 186048
AppSec [candidate] (185.115 ms) : 0, 185115
Debugger [baseline] (65.17 ms) : 0, 65170
Debugger [candidate] (64.687 ms) : 0, 64687
Remote Config [baseline] (560.943 µs) : 0, 561
Remote Config [candidate] (556.645 µs) : 0, 557
Telemetry [baseline] (7.89 ms) : 0, 7890
Telemetry [candidate] (7.692 ms) : 0, 7692
Flare Poller [baseline] (6.758 ms) : 0, 6758
Flare Poller [candidate] (6.698 ms) : 0, 6698
section iast
crashtracking [baseline] (1.23 ms) : 0, 1230
crashtracking [candidate] (1.219 ms) : 0, 1219
BytebuddyAgent [baseline] (824.746 ms) : 0, 824746
BytebuddyAgent [candidate] (823.326 ms) : 0, 823326
AgentMeter [baseline] (11.331 ms) : 0, 11331
AgentMeter [candidate] (11.277 ms) : 0, 11277
GlobalTracer [baseline] (237.852 ms) : 0, 237852
GlobalTracer [candidate] (238.671 ms) : 0, 238671
IAST [baseline] (29.148 ms) : 0, 29148
IAST [candidate] (31.784 ms) : 0, 31784
AppSec [baseline] (30.448 ms) : 0, 30448
AppSec [candidate] (28.469 ms) : 0, 28469
Debugger [baseline] (63.265 ms) : 0, 63265
Debugger [candidate] (63.401 ms) : 0, 63401
Remote Config [baseline] (523.955 µs) : 0, 524
Remote Config [candidate] (535.83 µs) : 0, 536
Telemetry [baseline] (8.111 ms) : 0, 8111
Telemetry [candidate] (8.002 ms) : 0, 8002
Flare Poller [baseline] (3.476 ms) : 0, 3476
Flare Poller [candidate] (3.449 ms) : 0, 3449
section profiling
crashtracking [baseline] (1.19 ms) : 0, 1190
crashtracking [candidate] (1.184 ms) : 0, 1184
BytebuddyAgent [baseline] (694.309 ms) : 0, 694309
BytebuddyAgent [candidate] (697.518 ms) : 0, 697518
AgentMeter [baseline] (8.932 ms) : 0, 8932
AgentMeter [candidate] (9.019 ms) : 0, 9019
GlobalTracer [baseline] (208.868 ms) : 0, 208868
GlobalTracer [candidate] (209.668 ms) : 0, 209668
AppSec [baseline] (32.856 ms) : 0, 32856
AppSec [candidate] (33.183 ms) : 0, 33183
Debugger [baseline] (66.228 ms) : 0, 66228
Debugger [candidate] (65.984 ms) : 0, 65984
Remote Config [baseline] (585.5 µs) : 0, 585
Remote Config [candidate] (578.476 µs) : 0, 578
Telemetry [baseline] (8.139 ms) : 0, 8139
Telemetry [candidate] (8.259 ms) : 0, 8259
Flare Poller [baseline] (3.576 ms) : 0, 3576
Flare Poller [candidate] (3.537 ms) : 0, 3537
ProfilingAgent [baseline] (94.365 ms) : 0, 94365
ProfilingAgent [candidate] (94.093 ms) : 0, 94093
Profiling [baseline] (94.923 ms) : 0, 94923
Profiling [candidate] (94.649 ms) : 0, 94649
Loading

Load

Parameters

BaselineCandidate
baseline_or_candidatebaselinecandidate
git_branchmastermtoff/otlp-writer
git_commit_date17773868371777494220
git_commit_shae6cac6496954d7
release_version1.62.0-SNAPSHOT~e6cac64dfd1.62.0-SNAPSHOT~96954d7d95
See matching parameters
BaselineCandidate
applicationinsecure-bankinsecure-bank
ci_job_date17774967001777496700
ci_job_id16442814081644281408
ci_pipeline_id110567036110567036
cpu_modelIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHzIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_versionLinux runner-zfyrx7zua-project-304-concurrent-1-r2o6wg7i 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxLinux runner-zfyrx7zua-project-304-concurrent-1-r2o6wg7i 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 2 performance improvements and 0 performance regressions! Performance is the same for 17 metrics, 17 unstable metrics.

scenarioΔ mean agg_http_req_duration_p50Δ mean agg_http_req_duration_p95Δ mean throughputcandidate mean agg_http_req_duration_p50candidate mean agg_http_req_duration_p95candidate mean throughputbaseline mean agg_http_req_duration_p50baseline mean agg_http_req_duration_p95baseline mean throughput
scenario:load:insecure-bank:iast_GLOBAL:high_loadbetter
[-253.716µs; -145.283µs] or [-8.329%; -4.769%]
better
[-667.237µs; -249.760µs] or [-7.841%; -2.935%]
unstable
[-58.865op/s; +187.490op/s] or [-4.920%; +15.669%]
2.847ms8.051ms1260.844op/s3.046ms8.509ms1196.531op/s
Request duration reports for petclinic
gantt
title petclinic - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section baseline
no_agent (17.921 ms) : 17738, 18104
. : milestone, 17921,
appsec (18.75 ms) : 18560, 18939
. : milestone, 18750,
code_origins (18.009 ms) : 17832, 18186
. : milestone, 18009,
iast (17.91 ms) : 17732, 18088
. : milestone, 17910,
profiling (18.859 ms) : 18669, 19050
. : milestone, 18859,
tracing (18.307 ms) : 18126, 18489
. : milestone, 18307,
section candidate
no_agent (18.148 ms) : 17961, 18336
. : milestone, 18148,
appsec (18.54 ms) : 18355, 18726
. : milestone, 18540,
code_origins (17.949 ms) : 17775, 18124
. : milestone, 17949,
iast (18.141 ms) : 17962, 18320
. : milestone, 18141,
profiling (18.402 ms) : 18217, 18587
. : milestone, 18402,
tracing (18.372 ms) : 18187, 18557
. : milestone, 18372,
Loading
  • baseline results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent17.921 ms [17.738 ms, 18.104 ms]-
appsec18.75 ms [18.56 ms, 18.939 ms]828.665 µs (4.6%)
code_origins18.009 ms [17.832 ms, 18.186 ms]87.736 µs (0.5%)
iast17.91 ms [17.732 ms, 18.088 ms]-10.706 µs (-0.1%)
profiling18.859 ms [18.669 ms, 19.05 ms]938.516 µs (5.2%)
tracing18.307 ms [18.126 ms, 18.489 ms]386.385 µs (2.2%)
  • candidate results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent18.148 ms [17.961 ms, 18.336 ms]-
appsec18.54 ms [18.355 ms, 18.726 ms]392.256 µs (2.2%)
code_origins17.949 ms [17.775 ms, 18.124 ms]-198.791 µs (-1.1%)
iast18.141 ms [17.962 ms, 18.32 ms]-7.606 µs (-0.0%)
profiling18.402 ms [18.217 ms, 18.587 ms]253.744 µs (1.4%)
tracing18.372 ms [18.187 ms, 18.557 ms]223.741 µs (1.2%)
Request duration reports for insecure-bank
gantt
title insecure-bank - request duration [CI 0.99] : candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section baseline
no_agent (1.252 ms) : 1240, 1264
. : milestone, 1252,
iast (3.385 ms) : 3344, 3426
. : milestone, 3385,
iast_FULL (5.921 ms) : 5862, 5980
. : milestone, 5921,
iast_GLOBAL (3.838 ms) : 3772, 3903
. : milestone, 3838,
profiling (2.057 ms) : 2039, 2074
. : milestone, 2057,
tracing (1.962 ms) : 1945, 1978
. : milestone, 1962,
section candidate
no_agent (1.268 ms) : 1255, 1280
. : milestone, 1268,
iast (3.371 ms) : 3326, 3416
. : milestone, 3371,
iast_FULL (5.991 ms) : 5931, 6052
. : milestone, 5991,
iast_GLOBAL (3.637 ms) : 3580, 3694
. : milestone, 3637,
profiling (2.197 ms) : 2174, 2220
. : milestone, 2197,
tracing (1.871 ms) : 1856, 1887
. : milestone, 1871,
Loading
  • baseline results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent1.252 ms [1.24 ms, 1.264 ms]-
iast3.385 ms [3.344 ms, 3.426 ms]2.133 ms (170.4%)
iast_FULL5.921 ms [5.862 ms, 5.98 ms]4.669 ms (373.0%)
iast_GLOBAL3.838 ms [3.772 ms, 3.903 ms]2.586 ms (206.6%)
profiling2.057 ms [2.039 ms, 2.074 ms]804.7 µs (64.3%)
tracing1.962 ms [1.945 ms, 1.978 ms]710.109 µs (56.7%)
  • candidate results
VariantRequest duration [CI 0.99]Δ no_agent
no_agent1.268 ms [1.255 ms, 1.28 ms]-
iast3.371 ms [3.326 ms, 3.416 ms]2.103 ms (165.9%)
iast_FULL5.991 ms [5.931 ms, 6.052 ms]4.724 ms (372.7%)
iast_GLOBAL3.637 ms [3.58 ms, 3.694 ms]2.369 ms (186.9%)
profiling2.197 ms [2.174 ms, 2.22 ms]929.494 µs (73.3%)
tracing1.871 ms [1.856 ms, 1.887 ms]603.542 µs (47.6%)

Dacapo

Parameters

BaselineCandidate
baseline_or_candidatebaselinecandidate
git_branchmastermtoff/otlp-writer
git_commit_date17773868371777494220
git_commit_shae6cac6496954d7
release_version1.62.0-SNAPSHOT~e6cac64dfd1.62.0-SNAPSHOT~96954d7d95
See matching parameters
BaselineCandidate
applicationbiojavabiojava
ci_job_date17774964261777496426
ci_job_id16442814101644281410
ci_pipeline_id110567036110567036
cpu_modelIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHzIntel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_versionLinux runner-zfyrx7zua-project-304-concurrent-0-lek1kz4h 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxLinux runner-zfyrx7zua-project-304-concurrent-0-lek1kz4h 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics.

Execution time for tomcat
gantt
title tomcat - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section baseline
no_agent (1.483 ms) : 1471, 1494
. : milestone, 1483,
appsec (3.823 ms) : 3602, 4045
. : milestone, 3823,
iast (2.269 ms) : 2199, 2339
. : milestone, 2269,
iast_GLOBAL (2.311 ms) : 2241, 2381
. : milestone, 2311,
profiling (2.093 ms) : 2038, 2148
. : milestone, 2093,
tracing (2.074 ms) : 2020, 2127
. : milestone, 2074,
section candidate
no_agent (1.487 ms) : 1475, 1498
. : milestone, 1487,
appsec (3.835 ms) : 3613, 4058
. : milestone, 3835,
iast (2.269 ms) : 2199, 2339
. : milestone, 2269,
iast_GLOBAL (2.314 ms) : 2244, 2384
. : milestone, 2314,
profiling (2.096 ms) : 2042, 2151
. : milestone, 2096,
tracing (2.07 ms) : 2016, 2123
. : milestone, 2070,
Loading
  • baseline results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent1.483 ms [1.471 ms, 1.494 ms]-
appsec3.823 ms [3.602 ms, 4.045 ms]2.341 ms (157.9%)
iast2.269 ms [2.199 ms, 2.339 ms]786.404 µs (53.0%)
iast_GLOBAL2.311 ms [2.241 ms, 2.381 ms]827.962 µs (55.8%)
profiling2.093 ms [2.038 ms, 2.148 ms]610.429 µs (41.2%)
tracing2.074 ms [2.02 ms, 2.127 ms]590.855 µs (39.8%)
  • candidate results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent1.487 ms [1.475 ms, 1.498 ms]-
appsec3.835 ms [3.613 ms, 4.058 ms]2.349 ms (158.0%)
iast2.269 ms [2.199 ms, 2.339 ms]782.723 µs (52.7%)
iast_GLOBAL2.314 ms [2.244 ms, 2.384 ms]827.061 µs (55.6%)
profiling2.096 ms [2.042 ms, 2.151 ms]609.82 µs (41.0%)
tracing2.07 ms [2.016 ms, 2.123 ms]583.195 µs (39.2%)
Execution time for biojava
gantt
title biojava - execution time [CI 0.99] : candidate=1.62.0-SNAPSHOT~96954d7d95, baseline=1.62.0-SNAPSHOT~e6cac64dfd
dateFormat X
axisFormat %s
section baseline
no_agent (15.66 s) : 15660000, 15660000
. : milestone, 15660000,
appsec (14.607 s) : 14607000, 14607000
. : milestone, 14607000,
iast (18.429 s) : 18429000, 18429000
. : milestone, 18429000,
iast_GLOBAL (17.747 s) : 17747000, 17747000
. : milestone, 17747000,
profiling (15.633 s) : 15633000, 15633000
. : milestone, 15633000,
tracing (14.753 s) : 14753000, 14753000
. : milestone, 14753000,
section candidate
no_agent (14.928 s) : 14928000, 14928000
. : milestone, 14928000,
appsec (14.714 s) : 14714000, 14714000
. : milestone, 14714000,
iast (18.625 s) : 18625000, 18625000
. : milestone, 18625000,
iast_GLOBAL (17.868 s) : 17868000, 17868000
. : milestone, 17868000,
profiling (14.88 s) : 14880000, 14880000
. : milestone, 14880000,
tracing (14.71 s) : 14710000, 14710000
. : milestone, 14710000,
Loading
  • baseline results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent15.66 s [15.66 s, 15.66 s]-
appsec14.607 s [14.607 s, 14.607 s]-1.053 s (-6.7%)
iast18.429 s [18.429 s, 18.429 s]2.769 s (17.7%)
iast_GLOBAL17.747 s [17.747 s, 17.747 s]2.087 s (13.3%)
profiling15.633 s [15.633 s, 15.633 s]-27.0 ms (-0.2%)
tracing14.753 s [14.753 s, 14.753 s]-907.0 ms (-5.8%)
  • candidate results
VariantExecution Time [CI 0.99]Δ no_agent
no_agent14.928 s [14.928 s, 14.928 s]-
appsec14.714 s [14.714 s, 14.714 s]-214.0 ms (-1.4%)
iast18.625 s [18.625 s, 18.625 s]3.697 s (24.8%)
iast_GLOBAL17.868 s [17.868 s, 17.868 s]2.94 s (19.7%)
profiling14.88 s [14.88 s, 14.88 s]-48.0 ms (-0.3%)
tracing14.71 s [14.71 s, 14.71 s]-218.0 ms (-1.5%)

@mcculls
mcculls self-requested a review April 27, 2026 09:27

@Override
public void onDroppedTrace(int spanCount) {
// TODO: surface drop counts via HealthMetrics

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I've purposefully left this out as its not in the current spec

@mtoffl01
mtoffl01 marked this pull request as ready for review April 27, 2026 20:16
@mtoffl01
mtoffl01 requested review from a team as code ownersApril 27, 2026 20:16
@mtoffl01
mtoffl01 requested review from mcculls and removed request for a teamApril 27, 2026 20:16
@github-actions

github-actionsBot commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

@mtoffl01mtoffl01 changed the title Implement OTLPWriterAdd OtlpWriter for OTLP-based trace export Apr 27, 2026
@mtoffl01mtoffl01 added the tag: ai generated Largely based on code generated by an AI or LLM label Apr 27, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:4333c2d0ac

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threaddd-trace-core/src/main/java/datadog/trace/common/writer/OtlpWriter.java Outdated
@mtoffl01mtoffl01 added type: feature Enhancements and improvements comp: core Tracer core labels Apr 27, 2026
@mtoffl01mtoffl01 changed the title Add OtlpWriter for OTLP-based trace export Add OtlpWriter for OTLP traces export Apr 27, 2026

@mccullsmcculls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Just one Q about the extra sampling in OtlpPayloadDispatcher (if this is not needed then removing it may help with the E2E test) - and the GRPC signal path needs fixing.

@mtoffl01
mtoffl01 changed the base branch from master to mtoff/otlp-traces-samplerApril 28, 2026 19:05
Base automatically changed from mtoff/otlp-traces-sampler to masterApril 28, 2026 22:05
@mtoffl01
mtoffl01 requested a review from mccullsApril 29, 2026 18:42

private static void writeSpanTag(
StreamingBuffer buf, UTF8BytesString key, UTF8BytesString value) {
if (value == null) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This check should be moved to the appropriate caller of writeSpanTag - do you know which call is involved?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@mtoffl01mtoffl01Apr 29, 2026

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe its on line 141, for span type:
writeSpanTag(buf, SPAN_TYPE, span.getSpanType());
Because spanType can be null. Should I change this to have an if span.getSpanType() != null prefix, and remove the null checks inside of the writeSpanTag functions?

@mccullsmccullsApr 29, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Yes, thanks - it's the callers responsibility to do the check - that way it's clear in the code which tags are optional and which are mandatory - it also helps avoid masking issues such as when we expect a tag to always have a non-null value and for some reason it doesn't.

}

private static void writeSpanTag(StreamingBuffer buf, UTF8BytesString key, CharSequence value) {
if (value == null) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This check should be moved to the appropriate caller of writeSpanTag - do you know which call is involved?

@github-actions

github-actionsBot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

⚠️ New Groovy Test Files Added

The following files add Groovy tests to modules that are candidates for migration to Java / JUnit 5:

  • dd-trace-core/src/test/groovy/datadog/trace/common/writer/OtlpWriterCombinedTest.groovy (module: dd-trace-core)

Consider writing these tests in Java / JUnit 5 instead to help with the ongoing migration effort.

@mtoffl01
mtoffl01 added this pull request to the merge queueApr 30, 2026
@dd-octo-sts

Copy link
Copy Markdown
Contributor

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351Bot commented Apr 30, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-04-30 14:32:51 UTC ℹ️ Start processing command /merge


2026-04-30 14:32:57 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in master is approximately 2h (p90).


2026-04-30 15:51:44 UTC ℹ️ MergeQueue: This merge request was merged

@github-merge-queue
github-merge-queueBot removed this pull request from the merge queue due to failed status checks Apr 30, 2026
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854dBot merged commit 2caa89f into masterApr 30, 2026
574 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854dBot deleted the mtoff/otlp-writer branch April 30, 2026 15:51
@github-actionsgithub-actionsBot added this to the 1.62.0 milestone Apr 30, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: coreTracer coretag: ai generatedLargely based on code generated by an AI or LLMtype: featureEnhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mtoffl01@mcculls