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: 62.45% (+2.73%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 86f5570 | 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 1761575617 1761574600
git_commit_sha 45b8e15 86f5570
release_version 1.55.0-SNAPSHOT~45b8e1524b 1.55.0-SNAPSHOT~86f557069d
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1761577352 1761577352
ci_job_id 1199603473 1199603473
ci_pipeline_id 80376894 80376894
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-3ir6t7nf 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-3ir6t7nf 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 1 performance regressions! Performance is the same for 52 metrics, 12 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:startup:insecure-bank:iast:Flare Poller worse
[+124.435µs; +389.732µs] or [+3.048%; +9.546%]
4.340ms 4.083ms
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.028 s) : 0, 1028218
Total [baseline] (8.676 s) : 0, 8676028
Agent [candidate] (1.018 s) : 0, 1017992
Total [candidate] (8.658 s) : 0, 8658240
section iast
Agent [baseline] (1.17 s) : 0, 1169949
Total [baseline] (9.333 s) : 0, 9332759
Agent [candidate] (1.153 s) : 0, 1153083
Total [candidate] (9.277 s) : 0, 9277232
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.028 s -
Agent iast 1.17 s 141.731 ms (13.8%)
Total tracing 8.676 s -
Total iast 9.333 s 656.731 ms (7.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.018 s -
Agent iast 1.153 s 135.091 ms (13.3%)
Total tracing 8.658 s -
Total iast 9.277 s 618.992 ms (7.1%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.46 ms) : 0, 1460
crashtracking [candidate] (1.457 ms) : 0, 1457
BytebuddyAgent [baseline] (700.942 ms) : 0, 700942
BytebuddyAgent [candidate] (693.826 ms) : 0, 693826
GlobalTracer [baseline] (244.413 ms) : 0, 244413
GlobalTracer [candidate] (243.181 ms) : 0, 243181
AppSec [baseline] (32.229 ms) : 0, 32229
AppSec [candidate] (32.173 ms) : 0, 32173
Debugger [baseline] (6.386 ms) : 0, 6386
Debugger [candidate] (6.284 ms) : 0, 6284
Remote Config [baseline] (677.059 µs) : 0, 677
Remote Config [candidate] (668.028 µs) : 0, 668
Telemetry [baseline] (15.234 ms) : 0, 15234
Telemetry [candidate] (9.238 ms) : 0, 9238
Flare Poller [baseline] (5.716 ms) : 0, 5716
Flare Poller [candidate] (10.139 ms) : 0, 10139
section iast
crashtracking [baseline] (1.481 ms) : 0, 1481
crashtracking [candidate] (1.479 ms) : 0, 1479
BytebuddyAgent [baseline] (830.569 ms) : 0, 830569
BytebuddyAgent [candidate] (816.068 ms) : 0, 816068
GlobalTracer [baseline] (235.216 ms) : 0, 235216
GlobalTracer [candidate] (231.873 ms) : 0, 231873
AppSec [baseline] (28.946 ms) : 0, 28946
AppSec [candidate] (35.544 ms) : 0, 35544
Debugger [baseline] (6.095 ms) : 0, 6095
Debugger [candidate] (6.168 ms) : 0, 6168
Remote Config [baseline] (593.481 µs) : 0, 593
Remote Config [candidate] (597.337 µs) : 0, 597
Telemetry [baseline] (8.373 ms) : 0, 8373
Telemetry [candidate] (8.722 ms) : 0, 8722
Flare Poller [baseline] (4.083 ms) : 0, 4083
Flare Poller [candidate] (4.34 ms) : 0, 4340
IAST [baseline] (33.103 ms) : 0, 33103
IAST [candidate] (27.022 ms) : 0, 27022
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.029 s) : 0, 1028750
Total [baseline] (10.782 s) : 0, 10781677
Agent [candidate] (1.017 s) : 0, 1016535
Total [candidate] (10.668 s) : 0, 10667914
section appsec
Agent [baseline] (1.203 s) : 0, 1203331
Total [baseline] (10.842 s) : 0, 10842279
Agent [candidate] (1.202 s) : 0, 1202057
Total [candidate] (10.86 s) : 0, 10859730
section iast
Agent [baseline] (1.177 s) : 0, 1177428
Total [baseline] (11.197 s) : 0, 11197113
Agent [candidate] (1.155 s) : 0, 1154882
Total [candidate] (11.178 s) : 0, 11177630
section profiling
Agent [baseline] (1.174 s) : 0, 1173867
Total [baseline] (10.858 s) : 0, 10857642
Agent [candidate] (1.164 s) : 0, 1163701
Total [candidate] (10.859 s) : 0, 10859457
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.029 s -
Agent appsec 1.203 s 174.582 ms (17.0%)
Agent iast 1.177 s 148.679 ms (14.5%)
Agent profiling 1.174 s 145.118 ms (14.1%)
Total tracing 10.782 s -
Total appsec 10.842 s 60.603 ms (0.6%)
Total iast 11.197 s 415.436 ms (3.9%)
Total profiling 10.858 s 75.966 ms (0.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.017 s -
Agent appsec 1.202 s 185.522 ms (18.3%)
Agent iast 1.155 s 138.347 ms (13.6%)
Agent profiling 1.164 s 147.166 ms (14.5%)
Total tracing 10.668 s -
Total appsec 10.86 s 191.816 ms (1.8%)
Total iast 11.178 s 509.715 ms (4.8%)
Total profiling 10.859 s 191.543 ms (1.8%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.46 ms) : 0, 1460
crashtracking [candidate] (1.441 ms) : 0, 1441
BytebuddyAgent [baseline] (701.624 ms) : 0, 701624
BytebuddyAgent [candidate] (691.437 ms) : 0, 691437
GlobalTracer [baseline] (244.867 ms) : 0, 244867
GlobalTracer [candidate] (242.286 ms) : 0, 242286
AppSec [baseline] (32.017 ms) : 0, 32017
AppSec [candidate] (32.077 ms) : 0, 32077
Debugger [baseline] (6.376 ms) : 0, 6376
Debugger [candidate] (6.282 ms) : 0, 6282
Remote Config [baseline] (675.81 µs) : 0, 676
Remote Config [candidate] (676.255 µs) : 0, 676
Telemetry [baseline] (14.202 ms) : 0, 14202
Telemetry [candidate] (9.312 ms) : 0, 9312
Flare Poller [baseline] (6.345 ms) : 0, 6345
Flare Poller [candidate] (12.0 ms) : 0, 12000
section appsec
crashtracking [baseline] (1.464 ms) : 0, 1464
crashtracking [candidate] (1.467 ms) : 0, 1467
BytebuddyAgent [baseline] (726.949 ms) : 0, 726949
BytebuddyAgent [candidate] (723.326 ms) : 0, 723326
GlobalTracer [baseline] (235.55 ms) : 0, 235550
GlobalTracer [candidate] (236.353 ms) : 0, 236353
AppSec [baseline] (174.35 ms) : 0, 174350
AppSec [candidate] (173.679 ms) : 0, 173679
Debugger [baseline] (5.963 ms) : 0, 5963
Debugger [candidate] (6.164 ms) : 0, 6164
Remote Config [baseline] (628.355 µs) : 0, 628
Remote Config [candidate] (642.625 µs) : 0, 643
Telemetry [baseline] (8.391 ms) : 0, 8391
Telemetry [candidate] (10.151 ms) : 0, 10151
Flare Poller [baseline] (3.882 ms) : 0, 3882
Flare Poller [candidate] (3.952 ms) : 0, 3952
IAST [baseline] (24.942 ms) : 0, 24942
IAST [candidate] (25.133 ms) : 0, 25133
section iast
crashtracking [baseline] (1.484 ms) : 0, 1484
crashtracking [candidate] (1.447 ms) : 0, 1447
BytebuddyAgent [baseline] (836.337 ms) : 0, 836337
BytebuddyAgent [candidate] (817.437 ms) : 0, 817437
GlobalTracer [baseline] (236.137 ms) : 0, 236137
GlobalTracer [candidate] (232.113 ms) : 0, 232113
AppSec [baseline] (29.932 ms) : 0, 29932
AppSec [candidate] (35.44 ms) : 0, 35440
Debugger [baseline] (6.228 ms) : 0, 6228
Debugger [candidate] (6.227 ms) : 0, 6227
Remote Config [baseline] (612.149 µs) : 0, 612
Remote Config [candidate] (614.158 µs) : 0, 614
Telemetry [baseline] (8.644 ms) : 0, 8644
Telemetry [candidate] (8.807 ms) : 0, 8807
Flare Poller [baseline] (4.162 ms) : 0, 4162
Flare Poller [candidate] (4.341 ms) : 0, 4341
IAST [baseline] (32.238 ms) : 0, 32238
IAST [candidate] (27.013 ms) : 0, 27013
section profiling
ProfilingAgent [baseline] (109.462 ms) : 0, 109462
ProfilingAgent [candidate] (109.717 ms) : 0, 109717
crashtracking [baseline] (1.467 ms) : 0, 1467
crashtracking [candidate] (1.46 ms) : 0, 1460
BytebuddyAgent [baseline] (727.165 ms) : 0, 727165
BytebuddyAgent [candidate] (720.563 ms) : 0, 720563
GlobalTracer [baseline] (220.535 ms) : 0, 220535
GlobalTracer [candidate] (218.555 ms) : 0, 218555
AppSec [baseline] (32.303 ms) : 0, 32303
AppSec [candidate] (32.251 ms) : 0, 32251
Debugger [baseline] (12.204 ms) : 0, 12204
Debugger [candidate] (6.618 ms) : 0, 6618
Remote Config [baseline] (1.446 ms) : 0, 1446
Remote Config [candidate] (690.902 µs) : 0, 691
Telemetry [baseline] (9.677 ms) : 0, 9677
Telemetry [candidate] (15.894 ms) : 0, 15894
Flare Poller [baseline] (4.222 ms) : 0, 4222
Flare Poller [candidate] (4.134 ms) : 0, 4134
Profiling [baseline] (110.099 ms) : 0, 110099
Profiling [candidate] (110.416 ms) : 0, 110416
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/docs_adding_new_configurations
git_commit_date 1761575617 1761574600
git_commit_sha 45b8e15 86f5570
release_version 1.55.0-SNAPSHOT~45b8e1524b 1.55.0-SNAPSHOT~86f557069d
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1761577109 1761577109
ci_job_id 1199603477 1199603477
ci_pipeline_id 80376894 80376894
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-1-957w5asm 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-1-957w5asm 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 3 performance regressions! Performance is the same for 9 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
[+284.089µs; +544.511µs] or [+3.641%; +6.979%]
unstable
[-101.309op/s; +42.059op/s] or [-17.063%; +7.084%]
8.217ms 564.094op/s 7.802ms 593.719op/s
scenario:load:insecure-bank:iast:high_load worse
[+275.720µs; +625.090µs] or [+2.888%; +6.548%]
unstable
[-76.809op/s; +33.496op/s] or [-15.795%; +6.888%]
9.997ms 464.625op/s 9.547ms 486.281op/s
scenario:load:petclinic:tracing:high_load worse
[+1.470ms; +2.252ms] or [+3.454%; +5.292%]
unstable
[-12.280op/s; +3.055op/s] or [-11.168%; +2.779%]
44.423ms 105.350op/s 42.561ms 109.963op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.313 ms) : 4261, 4365
.   : milestone, 4313,
iast (9.547 ms) : 9390, 9703
.   : milestone, 9547,
iast_FULL (14.316 ms) : 14032, 14601
.   : milestone, 14316,
iast_GLOBAL (10.812 ms) : 10619, 11005
.   : milestone, 10812,
profiling (8.706 ms) : 8562, 8850
.   : milestone, 8706,
tracing (7.802 ms) : 7686, 7919
.   : milestone, 7802,
section candidate
no_agent (4.36 ms) : 4312, 4408
.   : milestone, 4360,
iast (9.997 ms) : 9829, 10165
.   : milestone, 9997,
iast_FULL (13.921 ms) : 13648, 14195
.   : milestone, 13921,
iast_GLOBAL (11.178 ms) : 10974, 11381
.   : milestone, 11178,
profiling (8.752 ms) : 8608, 8897
.   : milestone, 8752,
tracing (8.217 ms) : 8091, 8342
.   : milestone, 8217,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.313 ms [4.261 ms, 4.365 ms] -
iast 9.547 ms [9.39 ms, 9.703 ms] 5.234 ms (121.4%)
iast_FULL 14.316 ms [14.032 ms, 14.601 ms] 10.004 ms (232.0%)
iast_GLOBAL 10.812 ms [10.619 ms, 11.005 ms] 6.499 ms (150.7%)
profiling 8.706 ms [8.562 ms, 8.85 ms] 4.393 ms (101.9%)
tracing 7.802 ms [7.686 ms, 7.919 ms] 3.49 ms (80.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.36 ms [4.312 ms, 4.408 ms] -
iast 9.997 ms [9.829 ms, 10.165 ms] 5.637 ms (129.3%)
iast_FULL 13.921 ms [13.648 ms, 14.195 ms] 9.561 ms (219.3%)
iast_GLOBAL 11.178 ms [10.974 ms, 11.381 ms] 6.818 ms (156.4%)
profiling 8.752 ms [8.608 ms, 8.897 ms] 4.393 ms (100.7%)
tracing 8.217 ms [8.091 ms, 8.342 ms] 3.857 ms (88.5%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b
    dateFormat X
    axisFormat %s
section baseline
no_agent (37.148 ms) : 36853, 37443
.   : milestone, 37148,
appsec (48.866 ms) : 48437, 49296
.   : milestone, 48866,
code_origins (43.548 ms) : 43164, 43933
.   : milestone, 43548,
iast (44.365 ms) : 43987, 44742
.   : milestone, 44365,
profiling (50.307 ms) : 49821, 50793
.   : milestone, 50307,
tracing (42.561 ms) : 42205, 42918
.   : milestone, 42561,
section candidate
no_agent (37.426 ms) : 37128, 37723
.   : milestone, 37426,
appsec (50.244 ms) : 49797, 50692
.   : milestone, 50244,
code_origins (44.375 ms) : 43989, 44762
.   : milestone, 44375,
iast (43.255 ms) : 42885, 43624
.   : milestone, 43255,
profiling (50.638 ms) : 50148, 51128
.   : milestone, 50638,
tracing (44.423 ms) : 44052, 44793
.   : milestone, 44423,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.148 ms [36.853 ms, 37.443 ms] -
appsec 48.866 ms [48.437 ms, 49.296 ms] 11.718 ms (31.5%)
code_origins 43.548 ms [43.164 ms, 43.933 ms] 6.4 ms (17.2%)
iast 44.365 ms [43.987 ms, 44.742 ms] 7.216 ms (19.4%)
profiling 50.307 ms [49.821 ms, 50.793 ms] 13.159 ms (35.4%)
tracing 42.561 ms [42.205 ms, 42.918 ms] 5.413 ms (14.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.426 ms [37.128 ms, 37.723 ms] -
appsec 50.244 ms [49.797 ms, 50.692 ms] 12.819 ms (34.3%)
code_origins 44.375 ms [43.989 ms, 44.762 ms] 6.95 ms (18.6%)
iast 43.255 ms [42.885 ms, 43.624 ms] 5.829 ms (15.6%)
profiling 50.638 ms [50.148 ms, 51.128 ms] 13.212 ms (35.3%)
tracing 44.423 ms [44.052 ms, 44.793 ms] 6.997 ms (18.7%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/docs_adding_new_configurations
git_commit_date 1761575617 1761574600
git_commit_sha 45b8e15 86f5570
release_version 1.55.0-SNAPSHOT~45b8e1524b 1.55.0-SNAPSHOT~86f557069d
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1761577582 1761577582
ci_job_id 1199603482 1199603482
ci_pipeline_id 80376894 80376894
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-zpyotzaq 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-zpyotzaq 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~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.019 s) : 15019000, 15019000
.   : milestone, 15019000,
appsec (14.709 s) : 14709000, 14709000
.   : milestone, 14709000,
iast (18.555 s) : 18555000, 18555000
.   : milestone, 18555000,
iast_GLOBAL (18.483 s) : 18483000, 18483000
.   : milestone, 18483000,
profiling (15.29 s) : 15290000, 15290000
.   : milestone, 15290000,
tracing (15.183 s) : 15183000, 15183000
.   : milestone, 15183000,
section candidate
no_agent (15.443 s) : 15443000, 15443000
.   : milestone, 15443000,
appsec (14.746 s) : 14746000, 14746000
.   : milestone, 14746000,
iast (18.69 s) : 18690000, 18690000
.   : milestone, 18690000,
iast_GLOBAL (18.103 s) : 18103000, 18103000
.   : milestone, 18103000,
profiling (15.727 s) : 15727000, 15727000
.   : milestone, 15727000,
tracing (14.892 s) : 14892000, 14892000
.   : milestone, 14892000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.019 s [15.019 s, 15.019 s] -
appsec 14.709 s [14.709 s, 14.709 s] -310.0 ms (-2.1%)
iast 18.555 s [18.555 s, 18.555 s] 3.536 s (23.5%)
iast_GLOBAL 18.483 s [18.483 s, 18.483 s] 3.464 s (23.1%)
profiling 15.29 s [15.29 s, 15.29 s] 271.0 ms (1.8%)
tracing 15.183 s [15.183 s, 15.183 s] 164.0 ms (1.1%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.443 s [15.443 s, 15.443 s] -
appsec 14.746 s [14.746 s, 14.746 s] -697.0 ms (-4.5%)
iast 18.69 s [18.69 s, 18.69 s] 3.247 s (21.0%)
iast_GLOBAL 18.103 s [18.103 s, 18.103 s] 2.66 s (17.2%)
profiling 15.727 s [15.727 s, 15.727 s] 284.0 ms (1.8%)
tracing 14.892 s [14.892 s, 14.892 s] -551.0 ms (-3.6%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~86f557069d, baseline=1.55.0-SNAPSHOT~45b8e1524b
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.479 ms) : 1467, 1490
.   : milestone, 1479,
appsec (3.715 ms) : 3498, 3933
.   : milestone, 3715,
iast (2.215 ms) : 2151, 2279
.   : milestone, 2215,
iast_GLOBAL (2.257 ms) : 2193, 2321
.   : milestone, 2257,
profiling (2.045 ms) : 1994, 2096
.   : milestone, 2045,
tracing (2.025 ms) : 1976, 2074
.   : milestone, 2025,
section candidate
no_agent (1.472 ms) : 1461, 1484
.   : milestone, 1472,
appsec (3.682 ms) : 3465, 3899
.   : milestone, 3682,
iast (2.213 ms) : 2150, 2277
.   : milestone, 2213,
iast_GLOBAL (2.246 ms) : 2182, 2311
.   : milestone, 2246,
profiling (2.06 ms) : 2008, 2112
.   : milestone, 2060,
tracing (2.023 ms) : 1973, 2074
.   : milestone, 2023,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.479 ms [1.467 ms, 1.49 ms] -
appsec 3.715 ms [3.498 ms, 3.933 ms] 2.237 ms (151.2%)
iast 2.215 ms [2.151 ms, 2.279 ms] 736.191 µs (49.8%)
iast_GLOBAL 2.257 ms [2.193 ms, 2.321 ms] 778.071 µs (52.6%)
profiling 2.045 ms [1.994 ms, 2.096 ms] 565.955 µs (38.3%)
tracing 2.025 ms [1.976 ms, 2.074 ms] 546.257 µs (36.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.472 ms [1.461 ms, 1.484 ms] -
appsec 3.682 ms [3.465 ms, 3.899 ms] 2.21 ms (150.1%)
iast 2.213 ms [2.15 ms, 2.277 ms] 741.339 µs (50.4%)
iast_GLOBAL 2.246 ms [2.182 ms, 2.311 ms] 774.388 µs (52.6%)
profiling 2.06 ms [2.008 ms, 2.112 ms] 587.911 µs (39.9%)
tracing 2.023 ms [1.973 ms, 2.074 ms] 551.372 µs (37.5%)

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. :)

@mhlidd mhlidd added comp: config and removed comp: core Tracer core labels Oct 27, 2025
@mhlidd mhlidd merged commit 4a1b258 into master Oct 27, 2025
538 of 539 checks passed
@mhlidd mhlidd deleted the mhlidd/docs_adding_new_configurations branch October 27, 2025 15:25
@github-actions github-actions bot added this to the 1.55.0 milestone Oct 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants