Skip to content

Conversation

@mhlidd
Copy link
Contributor

@mhlidd mhlidd commented Oct 22, 2025

What Does This Do

There is currently no documentation in the tracer on how to add a new configuration in dd-trace-java. With the addition of Config Inversion, docs are necessary to describe how to properly create new configurations in the tracer.

Motivation

Additional Notes

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@mhlidd mhlidd requested a review from a team as a code owner October 22, 2025 17:54
@github-actions
Copy link
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.

@mhlidd mhlidd added type: documentation tag: no release notes Changes to exclude from release notes comp: core Tracer core labels Oct 22, 2025
@datadog-official
Copy link

datadog-official bot commented Oct 22, 2025

🎯 Code Coverage
Patch Coverage: 100.00%
Total Coverage: 59.73% (+0.01%)

View detailed report

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

@pr-commenter
Copy link

pr-commenter bot commented Oct 22, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/docs_adding_new_configurations
git_commit_date 1761332592 1761339100
git_commit_sha f69e043 3266507
release_version 1.55.0-SNAPSHOT~f69e04325c 1.55.0-SNAPSHOT~3266507f6a
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1761341924 1761341924
ci_job_id 1197318349 1197318349
ci_pipeline_id 80273002 80273002
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-270yzy0f 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 Linux runner-zfyrx7zua-project-304-concurrent-0-270yzy0f 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
module Agent Agent
parent None None

Summary

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

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.033 s) : 0, 1032995
Total [baseline] (10.799 s) : 0, 10798981
Agent [candidate] (1.023 s) : 0, 1023478
Total [candidate] (10.695 s) : 0, 10695165
section appsec
Agent [baseline] (1.212 s) : 0, 1212069
Total [baseline] (10.931 s) : 0, 10931219
Agent [candidate] (1.196 s) : 0, 1196437
Total [candidate] (10.925 s) : 0, 10925185
section iast
Agent [baseline] (1.165 s) : 0, 1164697
Total [baseline] (11.145 s) : 0, 11145010
Agent [candidate] (1.159 s) : 0, 1158504
Total [candidate] (11.074 s) : 0, 11073677
section profiling
Agent [baseline] (1.181 s) : 0, 1181279
Total [baseline] (10.91 s) : 0, 10909520
Agent [candidate] (1.166 s) : 0, 1166382
Total [candidate] (10.903 s) : 0, 10903322
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.033 s -
Agent appsec 1.212 s 179.074 ms (17.3%)
Agent iast 1.165 s 131.702 ms (12.7%)
Agent profiling 1.181 s 148.284 ms (14.4%)
Total tracing 10.799 s -
Total appsec 10.931 s 132.238 ms (1.2%)
Total iast 11.145 s 346.03 ms (3.2%)
Total profiling 10.91 s 110.539 ms (1.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.023 s -
Agent appsec 1.196 s 172.959 ms (16.9%)
Agent iast 1.159 s 135.026 ms (13.2%)
Agent profiling 1.166 s 142.904 ms (14.0%)
Total tracing 10.695 s -
Total appsec 10.925 s 230.02 ms (2.2%)
Total iast 11.074 s 378.512 ms (3.5%)
Total profiling 10.903 s 208.157 ms (1.9%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.455 ms) : 0, 1455
crashtracking [candidate] (1.455 ms) : 0, 1455
BytebuddyAgent [baseline] (704.072 ms) : 0, 704072
BytebuddyAgent [candidate] (696.464 ms) : 0, 696464
GlobalTracer [baseline] (245.556 ms) : 0, 245556
GlobalTracer [candidate] (244.36 ms) : 0, 244360
AppSec [baseline] (32.361 ms) : 0, 32361
AppSec [candidate] (32.594 ms) : 0, 32594
Debugger [baseline] (6.371 ms) : 0, 6371
Debugger [candidate] (6.376 ms) : 0, 6376
Remote Config [baseline] (678.295 µs) : 0, 678
Remote Config [candidate] (674.446 µs) : 0, 674
Telemetry [baseline] (15.352 ms) : 0, 15352
Telemetry [candidate] (9.337 ms) : 0, 9337
Flare Poller [baseline] (5.932 ms) : 0, 5932
Flare Poller [candidate] (10.944 ms) : 0, 10944
section appsec
crashtracking [baseline] (1.475 ms) : 0, 1475
crashtracking [candidate] (1.457 ms) : 0, 1457
BytebuddyAgent [baseline] (733.196 ms) : 0, 733196
BytebuddyAgent [candidate] (718.982 ms) : 0, 718982
GlobalTracer [baseline] (237.061 ms) : 0, 237061
GlobalTracer [candidate] (235.341 ms) : 0, 235341
IAST [baseline] (25.31 ms) : 0, 25310
IAST [candidate] (24.882 ms) : 0, 24882
AppSec [baseline] (174.794 ms) : 0, 174794
AppSec [candidate] (175.254 ms) : 0, 175254
Debugger [baseline] (5.982 ms) : 0, 5982
Debugger [candidate] (6.165 ms) : 0, 6165
Remote Config [baseline] (631.283 µs) : 0, 631
Remote Config [candidate] (635.941 µs) : 0, 636
Telemetry [baseline] (8.519 ms) : 0, 8519
Telemetry [candidate] (8.608 ms) : 0, 8608
Flare Poller [baseline] (3.916 ms) : 0, 3916
Flare Poller [candidate] (3.935 ms) : 0, 3935
section iast
crashtracking [baseline] (1.48 ms) : 0, 1480
crashtracking [candidate] (1.475 ms) : 0, 1475
BytebuddyAgent [baseline] (826.273 ms) : 0, 826273
BytebuddyAgent [candidate] (821.483 ms) : 0, 821483
GlobalTracer [baseline] (234.344 ms) : 0, 234344
GlobalTracer [candidate] (232.458 ms) : 0, 232458
IAST [baseline] (30.096 ms) : 0, 30096
IAST [candidate] (26.774 ms) : 0, 26774
AppSec [baseline] (31.605 ms) : 0, 31605
AppSec [candidate] (35.111 ms) : 0, 35111
Debugger [baseline] (6.141 ms) : 0, 6141
Debugger [candidate] (6.141 ms) : 0, 6141
Remote Config [baseline] (602.666 µs) : 0, 603
Remote Config [candidate] (600.734 µs) : 0, 601
Telemetry [baseline] (8.471 ms) : 0, 8471
Telemetry [candidate] (8.646 ms) : 0, 8646
Flare Poller [baseline] (4.281 ms) : 0, 4281
Flare Poller [candidate] (4.238 ms) : 0, 4238
section profiling
crashtracking [baseline] (1.468 ms) : 0, 1468
crashtracking [candidate] (1.467 ms) : 0, 1467
BytebuddyAgent [baseline] (731.722 ms) : 0, 731722
BytebuddyAgent [candidate] (722.121 ms) : 0, 722121
GlobalTracer [baseline] (221.57 ms) : 0, 221570
GlobalTracer [candidate] (219.174 ms) : 0, 219174
AppSec [baseline] (32.517 ms) : 0, 32517
AppSec [candidate] (32.353 ms) : 0, 32353
Debugger [baseline] (12.462 ms) : 0, 12462
Debugger [candidate] (7.346 ms) : 0, 7346
Remote Config [baseline] (707.733 µs) : 0, 708
Remote Config [candidate] (690.36 µs) : 0, 690
Telemetry [baseline] (10.483 ms) : 0, 10483
Telemetry [candidate] (15.237 ms) : 0, 15237
Flare Poller [baseline] (4.167 ms) : 0, 4167
Flare Poller [candidate] (4.099 ms) : 0, 4099
ProfilingAgent [baseline] (110.233 ms) : 0, 110233
ProfilingAgent [candidate] (109.955 ms) : 0, 109955
Profiling [baseline] (110.913 ms) : 0, 110913
Profiling [candidate] (110.586 ms) : 0, 110586
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.042 s) : 0, 1041655
Total [baseline] (8.671 s) : 0, 8671328
Agent [candidate] (1.025 s) : 0, 1025021
Total [candidate] (8.675 s) : 0, 8675095
section iast
Agent [baseline] (1.172 s) : 0, 1171637
Total [baseline] (9.41 s) : 0, 9410494
Agent [candidate] (1.153 s) : 0, 1153444
Total [candidate] (9.337 s) : 0, 9336990
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.042 s -
Agent iast 1.172 s 129.982 ms (12.5%)
Total tracing 8.671 s -
Total iast 9.41 s 739.165 ms (8.5%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.025 s -
Agent iast 1.153 s 128.423 ms (12.5%)
Total tracing 8.675 s -
Total iast 9.337 s 661.896 ms (7.6%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.494 ms) : 0, 1494
crashtracking [candidate] (1.45 ms) : 0, 1450
BytebuddyAgent [baseline] (710.333 ms) : 0, 710333
BytebuddyAgent [candidate] (698.603 ms) : 0, 698603
GlobalTracer [baseline] (247.355 ms) : 0, 247355
GlobalTracer [candidate] (245.018 ms) : 0, 245018
AppSec [baseline] (32.762 ms) : 0, 32762
AppSec [candidate] (32.761 ms) : 0, 32761
Debugger [baseline] (6.504 ms) : 0, 6504
Debugger [candidate] (6.381 ms) : 0, 6381
Remote Config [baseline] (692.22 µs) : 0, 692
Remote Config [candidate] (680.585 µs) : 0, 681
Telemetry [baseline] (14.408 ms) : 0, 14408
Telemetry [candidate] (9.433 ms) : 0, 9433
Flare Poller [baseline] (6.621 ms) : 0, 6621
Flare Poller [candidate] (9.511 ms) : 0, 9511
section iast
crashtracking [baseline] (1.468 ms) : 0, 1468
crashtracking [candidate] (1.481 ms) : 0, 1481
BytebuddyAgent [baseline] (830.494 ms) : 0, 830494
BytebuddyAgent [candidate] (816.045 ms) : 0, 816045
GlobalTracer [baseline] (235.715 ms) : 0, 235715
GlobalTracer [candidate] (232.125 ms) : 0, 232125
IAST [baseline] (32.354 ms) : 0, 32354
IAST [candidate] (26.88 ms) : 0, 26880
AppSec [baseline] (30.48 ms) : 0, 30480
AppSec [candidate] (35.567 ms) : 0, 35567
Debugger [baseline] (6.262 ms) : 0, 6262
Debugger [candidate] (6.203 ms) : 0, 6203
Remote Config [baseline] (647.601 µs) : 0, 648
Remote Config [candidate] (611.938 µs) : 0, 612
Telemetry [baseline] (8.643 ms) : 0, 8643
Telemetry [candidate] (8.774 ms) : 0, 8774
Flare Poller [baseline] (4.229 ms) : 0, 4229
Flare Poller [candidate] (4.327 ms) : 0, 4327
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/docs_adding_new_configurations
git_commit_date 1761332592 1761339100
git_commit_sha f69e043 3266507
release_version 1.55.0-SNAPSHOT~f69e04325c 1.55.0-SNAPSHOT~3266507f6a
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1761341591 1761341591
ci_job_id 1197318350 1197318350
ci_pipeline_id 80273002 80273002
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-gosichrv 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 Linux runner-zfyrx7zua-project-304-concurrent-0-gosichrv 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 1 performance improvements and 3 performance regressions! Performance is the same for 8 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:tracing:high_load worse
[+190.588µs; +437.686µs] or [+2.451%; +5.630%]
unstable
[-93.509op/s; +47.572op/s] or [-15.690%; +7.982%]
8.089ms 573.000op/s 7.774ms 595.969op/s
scenario:load:insecure-bank:iast_FULL:high_load worse
[+647.320µs; +1262.541µs] or [+4.679%; +9.125%]
unstable
[-55.670op/s; +12.170op/s] or [-16.532%; +3.614%]
14.791ms 315.000op/s 13.836ms 336.750op/s
scenario:load:petclinic:iast:high_load worse
[+1.267ms; +2.108ms] or [+2.859%; +4.758%]
unstable
[-9.315op/s; +4.091op/s] or [-8.817%; +3.872%]
45.985ms 103.038op/s 44.298ms 105.650op/s
scenario:load:petclinic:profiling:high_load better
[-3.196ms; -2.267ms] or [-6.512%; -4.619%]
unstable
[+0.298op/s; +13.458op/s] or [+0.313%; +14.112%]
46.344ms 102.241op/s 49.075ms 95.362op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.258 ms) : 4205, 4311
.   : milestone, 4258,
iast (9.794 ms) : 9630, 9958
.   : milestone, 9794,
iast_FULL (13.836 ms) : 13563, 14109
.   : milestone, 13836,
iast_GLOBAL (10.771 ms) : 10581, 10961
.   : milestone, 10771,
profiling (9.0 ms) : 8859, 9140
.   : milestone, 9000,
tracing (7.774 ms) : 7663, 7886
.   : milestone, 7774,
section candidate
no_agent (4.3 ms) : 4252, 4349
.   : milestone, 4300,
iast (9.902 ms) : 9735, 10069
.   : milestone, 9902,
iast_FULL (14.791 ms) : 14493, 15089
.   : milestone, 14791,
iast_GLOBAL (10.965 ms) : 10768, 11162
.   : milestone, 10965,
profiling (8.794 ms) : 8649, 8939
.   : milestone, 8794,
tracing (8.089 ms) : 7971, 8206
.   : milestone, 8089,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.258 ms [4.205 ms, 4.311 ms] -
iast 9.794 ms [9.63 ms, 9.958 ms] 5.536 ms (130.0%)
iast_FULL 13.836 ms [13.563 ms, 14.109 ms] 9.578 ms (224.9%)
iast_GLOBAL 10.771 ms [10.581 ms, 10.961 ms] 6.513 ms (153.0%)
profiling 9.0 ms [8.859 ms, 9.14 ms] 4.742 ms (111.4%)
tracing 7.774 ms [7.663 ms, 7.886 ms] 3.516 ms (82.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.3 ms [4.252 ms, 4.349 ms] -
iast 9.902 ms [9.735 ms, 10.069 ms] 5.602 ms (130.3%)
iast_FULL 14.791 ms [14.493 ms, 15.089 ms] 10.491 ms (244.0%)
iast_GLOBAL 10.965 ms [10.768 ms, 11.162 ms] 6.665 ms (155.0%)
profiling 8.794 ms [8.649 ms, 8.939 ms] 4.493 ms (104.5%)
tracing 8.089 ms [7.971 ms, 8.206 ms] 3.788 ms (88.1%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c
    dateFormat X
    axisFormat %s
section baseline
no_agent (37.44 ms) : 37134, 37745
.   : milestone, 37440,
appsec (48.637 ms) : 48210, 49064
.   : milestone, 48637,
code_origins (43.325 ms) : 42941, 43709
.   : milestone, 43325,
iast (44.298 ms) : 43912, 44685
.   : milestone, 44298,
profiling (49.075 ms) : 48627, 49523
.   : milestone, 49075,
tracing (44.668 ms) : 44297, 45039
.   : milestone, 44668,
section candidate
no_agent (38.306 ms) : 37989, 38622
.   : milestone, 38306,
appsec (47.352 ms) : 46928, 47776
.   : milestone, 47352,
code_origins (43.511 ms) : 43125, 43896
.   : milestone, 43511,
iast (45.985 ms) : 45591, 46380
.   : milestone, 45985,
profiling (46.344 ms) : 45929, 46758
.   : milestone, 46344,
tracing (44.719 ms) : 44330, 45109
.   : milestone, 44719,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.44 ms [37.134 ms, 37.745 ms] -
appsec 48.637 ms [48.21 ms, 49.064 ms] 11.197 ms (29.9%)
code_origins 43.325 ms [42.941 ms, 43.709 ms] 5.885 ms (15.7%)
iast 44.298 ms [43.912 ms, 44.685 ms] 6.858 ms (18.3%)
profiling 49.075 ms [48.627 ms, 49.523 ms] 11.635 ms (31.1%)
tracing 44.668 ms [44.297 ms, 45.039 ms] 7.228 ms (19.3%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 38.306 ms [37.989 ms, 38.622 ms] -
appsec 47.352 ms [46.928 ms, 47.776 ms] 9.046 ms (23.6%)
code_origins 43.511 ms [43.125 ms, 43.896 ms] 5.205 ms (13.6%)
iast 45.985 ms [45.591 ms, 46.38 ms] 7.68 ms (20.0%)
profiling 46.344 ms [45.929 ms, 46.758 ms] 8.038 ms (21.0%)
tracing 44.719 ms [44.33 ms, 45.109 ms] 6.414 ms (16.7%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/docs_adding_new_configurations
git_commit_date 1761332592 1761339100
git_commit_sha f69e043 3266507
release_version 1.55.0-SNAPSHOT~f69e04325c 1.55.0-SNAPSHOT~3266507f6a
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1761342107 1761342107
ci_job_id 1197318351 1197318351
ci_pipeline_id 80273002 80273002
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-icr5nndk 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 Linux runner-zfyrx7zua-project-304-concurrent-0-icr5nndk 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 biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c
    dateFormat X
    axisFormat %s
section baseline
no_agent (14.981 s) : 14981000, 14981000
.   : milestone, 14981000,
appsec (14.521 s) : 14521000, 14521000
.   : milestone, 14521000,
iast (18.521 s) : 18521000, 18521000
.   : milestone, 18521000,
iast_GLOBAL (17.775 s) : 17775000, 17775000
.   : milestone, 17775000,
profiling (15.485 s) : 15485000, 15485000
.   : milestone, 15485000,
tracing (15.267 s) : 15267000, 15267000
.   : milestone, 15267000,
section candidate
no_agent (14.96 s) : 14960000, 14960000
.   : milestone, 14960000,
appsec (15.054 s) : 15054000, 15054000
.   : milestone, 15054000,
iast (18.589 s) : 18589000, 18589000
.   : milestone, 18589000,
iast_GLOBAL (18.101 s) : 18101000, 18101000
.   : milestone, 18101000,
profiling (15.332 s) : 15332000, 15332000
.   : milestone, 15332000,
tracing (15.261 s) : 15261000, 15261000
.   : milestone, 15261000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.981 s [14.981 s, 14.981 s] -
appsec 14.521 s [14.521 s, 14.521 s] -460.0 ms (-3.1%)
iast 18.521 s [18.521 s, 18.521 s] 3.54 s (23.6%)
iast_GLOBAL 17.775 s [17.775 s, 17.775 s] 2.794 s (18.7%)
profiling 15.485 s [15.485 s, 15.485 s] 504.0 ms (3.4%)
tracing 15.267 s [15.267 s, 15.267 s] 286.0 ms (1.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.96 s [14.96 s, 14.96 s] -
appsec 15.054 s [15.054 s, 15.054 s] 94.0 ms (0.6%)
iast 18.589 s [18.589 s, 18.589 s] 3.629 s (24.3%)
iast_GLOBAL 18.101 s [18.101 s, 18.101 s] 3.141 s (21.0%)
profiling 15.332 s [15.332 s, 15.332 s] 372.0 ms (2.5%)
tracing 15.261 s [15.261 s, 15.261 s] 301.0 ms (2.0%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~3266507f6a, baseline=1.55.0-SNAPSHOT~f69e04325c
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.476 ms) : 1465, 1488
.   : milestone, 1476,
appsec (3.68 ms) : 3466, 3894
.   : milestone, 3680,
iast (2.214 ms) : 2151, 2278
.   : milestone, 2214,
iast_GLOBAL (2.259 ms) : 2194, 2323
.   : milestone, 2259,
profiling (2.083 ms) : 2029, 2136
.   : milestone, 2083,
tracing (2.05 ms) : 1999, 2100
.   : milestone, 2050,
section candidate
no_agent (1.473 ms) : 1462, 1485
.   : milestone, 1473,
appsec (3.651 ms) : 3439, 3863
.   : milestone, 3651,
iast (2.214 ms) : 2151, 2278
.   : milestone, 2214,
iast_GLOBAL (2.247 ms) : 2183, 2311
.   : milestone, 2247,
profiling (2.055 ms) : 2003, 2106
.   : milestone, 2055,
tracing (2.036 ms) : 1987, 2086
.   : milestone, 2036,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.476 ms [1.465 ms, 1.488 ms] -
appsec 3.68 ms [3.466 ms, 3.894 ms] 2.204 ms (149.3%)
iast 2.214 ms [2.151 ms, 2.278 ms] 738.073 µs (50.0%)
iast_GLOBAL 2.259 ms [2.194 ms, 2.323 ms] 782.376 µs (53.0%)
profiling 2.083 ms [2.029 ms, 2.136 ms] 606.403 µs (41.1%)
tracing 2.05 ms [1.999 ms, 2.1 ms] 573.561 µs (38.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.473 ms [1.462 ms, 1.485 ms] -
appsec 3.651 ms [3.439 ms, 3.863 ms] 2.178 ms (147.8%)
iast 2.214 ms [2.151 ms, 2.278 ms] 740.914 µs (50.3%)
iast_GLOBAL 2.247 ms [2.183 ms, 2.311 ms] 773.318 µs (52.5%)
profiling 2.055 ms [2.003 ms, 2.106 ms] 581.434 µs (39.5%)
tracing 2.036 ms [1.987 ms, 2.086 ms] 563.111 µs (38.2%)

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

🔍 nitpick: ‏Config files are sometimes refer as file ("File.java") and sometimes as class ("File"). It could benefit from uniformity.

-- Have to take a break, will continue the review when I get back --

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

👏 praise: ‏Thanks for adding some doc about our config system!

❔ question: ‏I could not find mention about the config_norm_rules.json. Should it be part of the doc too or does this part is supposed to go away?

Configurations are separated into different files based on the product they are related to. e.g. `CiVisiblity` related configurations live in `CiVisibilityConfig`, `Tracer` related in `TracerConfig`, etc.
Default values for configurations live in `ConfigDefaults.java`.

Configuration values are read in `Config.java`, which utilizes helper methods in `ConfigProvider.java` to fetch the final value for a configuration after searching through all Configuration Sources and determining the final value based on Source priority.
Copy link
Contributor

Choose a reason for hiding this comment

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

🎯 suggestion: ‏It could be nice to show a list of the various configuration sources and what their purpose are. Typically, the one from CI Vis is not trivial.

Copy link
Contributor Author

@mhlidd mhlidd Oct 23, 2025

Choose a reason for hiding this comment

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

@mtoffl01 and I discussed that we wait to add documentation for Sources until Stable/Declarative/Hands-Off Config has a finalized term to be used publicly.

Documentation about sources will likely be a new README that is linked from this page.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it's alright to document this now in dd-trace-java docs; in our conversations, I meant that public docs (docs.datadoghq.com) must wait.

The name for this file-based config stuff is definitely, officially Declarative Config 😁 .

Happy to help craft the sources doc if need be.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What could actually be good is if we mention the sources here, and link to the public docs with more info. I don't think devs generally need to be super concerned about the sources when adding new configurations, but a link could always be good to provide more info. WDYT?

@PerfectSlayer PerfectSlayer changed the title chore: Adding Docs on How to Add a Configuration Adding Docs on How to Add a Configuration Oct 23, 2025
@PerfectSlayer PerfectSlayer changed the title Adding Docs on How to Add a Configuration Add Docs on How to Add a Configuration Oct 23, 2025
Copy link
Contributor

@mtoffl01 mtoffl01 left a comment

Choose a reason for hiding this comment

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

All suggestions, no blockers. Thanks for doing this!

Configurations are separated into different files based on the product they are related to. e.g. `CiVisiblity` related configurations live in `CiVisibilityConfig`, `Tracer` related in `TracerConfig`, etc.
Default values for configurations live in `ConfigDefaults.java`.

Configuration values are read in `Config.java`, which utilizes helper methods in `ConfigProvider.java` to fetch the final value for a configuration after searching through all Configuration Sources and determining the final value based on Source priority.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it's alright to document this now in dd-trace-java docs; in our conversations, I meant that public docs (docs.datadoghq.com) must wait.

The name for this file-based config stuff is definitely, officially Declarative Config 😁 .

Happy to help craft the sources doc if need be.

}
}
```
8. If the configuration is unique to all tracing libraries, add it to the [Feature Parity Dashboard](https://feature-parity.us1.prod.dog/#/configurations?viewType=configurations). This ensures that we have good documentation of all configurations supported in the library.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
8. If the configuration is unique to all tracing libraries, add it to the [Feature Parity Dashboard](https://feature-parity.us1.prod.dog/#/configurations?viewType=configurations). This ensures that we have good documentation of all configurations supported in the library.
8. If the configuration is unique to this library, add it to the [Feature Parity Dashboard](https://feature-parity.us1.prod.dog/#/configurations?viewType=configurations). This ensures that we have good documentation of all configurations supported in the library.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This was intentional. If we are adding a config to Java that exists in other libraries, we expect it to already be documented in the FPD


## Verifying the Configuration

To verify a configuration has been correctly added, developers can modify existing test cases in `ConfigTest.groovy` to set the value of the configuration with various sources and confirm the internal value is correctly set in `Config.java`.
Copy link
Contributor

Choose a reason for hiding this comment

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

Would be sick to have a new test populate for the new config automatically... maybe someday. 😄

Copy link
Contributor

Choose a reason for hiding this comment

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

Not sure that "automated generated tests" will have real value if it's only testing "getter" behavior to comply with the code coverage policy.
To me, it make sense to write tests when there is a specific logic at play, like this will be enabled if both X and Y are enable and Z contains xxx.

On thing I would like at mid term is to have:

  • Config declaration per product -- like we have today TracerConfig, CiVisibilityConfig
  • Such config would declare keys, aliases, type (and parser if needed)
  • This config declaration would be used to generate the Config class(es).

It does not have to be a god class with all config from it, it can be split by products too.
But this would get rid of the contructor / getter / toString / testing boilerplate...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sounds like this could be something Config Inversion/Registry could be very useful for with our new v2 format. :)

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

Labels

comp: core Tracer core tag: no release notes Changes to exclude from release notes type: documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants