Skip to content

Conversation

PerfectSlayer
Copy link
Contributor

@PerfectSlayer PerfectSlayer commented Aug 27, 2025

What Does This Do

This PR refactor the config related code into its own module.

Motivation

This would improve readability, maintenance and ownership.

Additional Notes

Using :utils as destination for now as the new config module still has :dd-trace-api as dependency so can't be considered as a :component.

The Config and InstrumenterConfig are not good candidate to the refactoring as they are too tightly coupled to many other products.
The DynamicConfig could still be a good candidate (coupled with sampling internal api).

I used Dependency Inversion for the OTel metrics collector. It’s needed for the OtelEnvironmentConfigSource but can’t be moved to the new config module as it’s heavily dependent on the telemetry code.

We still need to :

  • Move the :component:yaml into this new module (only one class and one dependency, only used for stable config)
  • Decouple the test -- this will be painful as we will discover must of the stuff is not properly / independently tested.
  • Update the module package structure for coherence -- classes were not moved to another package to avoid introducing too many changes

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@PerfectSlayer PerfectSlayer added comp: core Tracer core tag: no release notes Changes to exclude from release notes type: refactoring labels Aug 27, 2025
@datadog-datadog-prod-us1
Copy link
Contributor

datadog-datadog-prod-us1 bot commented Aug 27, 2025

🎯 Code Coverage
Patch Coverage: 23.08%
Total Coverage: 59.62% (-0.54%)

View detailed report

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

@pr-commenter
Copy link

pr-commenter bot commented Aug 27, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master bbujon/config-module
git_commit_date 1757946373 1757948785
git_commit_sha 8f4fb42 b40c033
release_version 1.54.0-SNAPSHOT~8f4fb427ca 1.54.0-SNAPSHOT~b40c033805
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1757950500 1757950500
ci_job_id 1129309897 1129309897
ci_pipeline_id 76493255 76493255
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-bfzcs7a2 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-bfzcs7a2 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 46 metrics, 13 unstable metrics.

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.066 s) : 0, 1065572
Total [baseline] (8.66 s) : 0, 8660091
Agent [candidate] (1.065 s) : 0, 1065026
Total [candidate] (8.636 s) : 0, 8636325
section iast
Agent [baseline] (1.194 s) : 0, 1193951
Total [baseline] (9.328 s) : 0, 9327800
Agent [candidate] (1.191 s) : 0, 1190808
Total [candidate] (9.325 s) : 0, 9325382
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.066 s -
Agent iast 1.194 s 128.379 ms (12.0%)
Total tracing 8.66 s -
Total iast 9.328 s 667.709 ms (7.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.065 s -
Agent iast 1.191 s 125.783 ms (11.8%)
Total tracing 8.636 s -
Total iast 9.325 s 689.057 ms (8.0%)
gantt
    title insecure-bank - break down per module: candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.461 ms) : 0, 1461
crashtracking [candidate] (1.465 ms) : 0, 1465
BytebuddyAgent [baseline] (735.925 ms) : 0, 735925
BytebuddyAgent [candidate] (735.016 ms) : 0, 735016
GlobalTracer [baseline] (252.878 ms) : 0, 252878
GlobalTracer [candidate] (253.202 ms) : 0, 253202
AppSec [baseline] (30.683 ms) : 0, 30683
AppSec [candidate] (30.725 ms) : 0, 30725
Debugger [baseline] (6.427 ms) : 0, 6427
Debugger [candidate] (6.409 ms) : 0, 6409
Remote Config [baseline] (690.06 µs) : 0, 690
Remote Config [candidate] (691.353 µs) : 0, 691
Telemetry [baseline] (16.464 ms) : 0, 16464
Telemetry [candidate] (16.371 ms) : 0, 16371
section iast
crashtracking [baseline] (1.477 ms) : 0, 1477
crashtracking [candidate] (1.463 ms) : 0, 1463
BytebuddyAgent [baseline] (855.298 ms) : 0, 855298
BytebuddyAgent [candidate] (852.721 ms) : 0, 852721
GlobalTracer [baseline] (249.578 ms) : 0, 249578
GlobalTracer [candidate] (244.171 ms) : 0, 244171
IAST [baseline] (27.167 ms) : 0, 27167
IAST [candidate] (31.264 ms) : 0, 31264
AppSec [baseline] (24.607 ms) : 0, 24607
AppSec [candidate] (25.409 ms) : 0, 25409
Debugger [baseline] (6.001 ms) : 0, 6001
Debugger [candidate] (6.05 ms) : 0, 6050
Remote Config [baseline] (602.492 µs) : 0, 602
Remote Config [candidate] (614.592 µs) : 0, 615
Telemetry [baseline] (8.177 ms) : 0, 8177
Telemetry [candidate] (8.188 ms) : 0, 8188
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.069 s) : 0, 1069372
Total [baseline] (10.791 s) : 0, 10791274
Agent [candidate] (1.062 s) : 0, 1061954
Total [candidate] (10.83 s) : 0, 10830391
section appsec
Agent [baseline] (1.235 s) : 0, 1235486
Total [baseline] (11.11 s) : 0, 11109520
Agent [candidate] (1.247 s) : 0, 1246802
Total [candidate] (11.101 s) : 0, 11100876
section iast
Agent [baseline] (1.196 s) : 0, 1195781
Total [baseline] (11.033 s) : 0, 11033498
Agent [candidate] (1.204 s) : 0, 1203680
Total [candidate] (9.717 s) : 0, 9716829
section profiling
Agent [baseline] (1.221 s) : 0, 1220531
Total [baseline] (11.068 s) : 0, 11067522
Agent [candidate] (1.213 s) : 0, 1212676
Total [candidate] (11.058 s) : 0, 11057946
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.069 s -
Agent appsec 1.235 s 166.114 ms (15.5%)
Agent iast 1.196 s 126.409 ms (11.8%)
Agent profiling 1.221 s 151.159 ms (14.1%)
Total tracing 10.791 s -
Total appsec 11.11 s 318.246 ms (2.9%)
Total iast 11.033 s 242.224 ms (2.2%)
Total profiling 11.068 s 276.248 ms (2.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.062 s -
Agent appsec 1.247 s 184.847 ms (17.4%)
Agent iast 1.204 s 141.726 ms (13.3%)
Agent profiling 1.213 s 150.722 ms (14.2%)
Total tracing 10.83 s -
Total appsec 11.101 s 270.486 ms (2.5%)
Total iast 9.717 s -1.114 s (-10.3%)
Total profiling 11.058 s 227.555 ms (2.1%)
gantt
    title petclinic - break down per module: candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.472 ms) : 0, 1472
crashtracking [candidate] (1.455 ms) : 0, 1455
BytebuddyAgent [baseline] (739.87 ms) : 0, 739870
BytebuddyAgent [candidate] (733.087 ms) : 0, 733087
GlobalTracer [baseline] (253.457 ms) : 0, 253457
GlobalTracer [candidate] (252.571 ms) : 0, 252571
AppSec [baseline] (30.587 ms) : 0, 30587
AppSec [candidate] (30.42 ms) : 0, 30420
Debugger [baseline] (6.425 ms) : 0, 6425
Debugger [candidate] (6.364 ms) : 0, 6364
Remote Config [baseline] (692.683 µs) : 0, 693
Remote Config [candidate] (690.209 µs) : 0, 690
Telemetry [baseline] (15.524 ms) : 0, 15524
Telemetry [candidate] (16.238 ms) : 0, 16238
section appsec
crashtracking [baseline] (1.457 ms) : 0, 1457
crashtracking [candidate] (1.467 ms) : 0, 1467
BytebuddyAgent [baseline] (755.741 ms) : 0, 755741
BytebuddyAgent [candidate] (763.876 ms) : 0, 763876
GlobalTracer [baseline] (245.924 ms) : 0, 245924
GlobalTracer [candidate] (248.037 ms) : 0, 248037
IAST [baseline] (23.749 ms) : 0, 23749
IAST [candidate] (24.084 ms) : 0, 24084
AppSec [baseline] (171.473 ms) : 0, 171473
AppSec [candidate] (172.626 ms) : 0, 172626
Debugger [baseline] (6.763 ms) : 0, 6763
Debugger [candidate] (6.087 ms) : 0, 6087
Remote Config [baseline] (645.254 µs) : 0, 645
Remote Config [candidate] (660.73 µs) : 0, 661
Telemetry [baseline] (8.496 ms) : 0, 8496
Telemetry [candidate] (8.594 ms) : 0, 8594
section iast
crashtracking [baseline] (1.461 ms) : 0, 1461
crashtracking [candidate] (1.476 ms) : 0, 1476
BytebuddyAgent [baseline] (855.844 ms) : 0, 855844
BytebuddyAgent [candidate] (864.307 ms) : 0, 864307
GlobalTracer [baseline] (247.796 ms) : 0, 247796
GlobalTracer [candidate] (248.228 ms) : 0, 248228
IAST [baseline] (28.982 ms) : 0, 28982
IAST [candidate] (29.582 ms) : 0, 29582
AppSec [baseline] (25.596 ms) : 0, 25596
AppSec [candidate] (24.319 ms) : 0, 24319
Debugger [baseline] (6.069 ms) : 0, 6069
Debugger [candidate] (6.042 ms) : 0, 6042
Remote Config [baseline] (607.727 µs) : 0, 608
Remote Config [candidate] (598.026 µs) : 0, 598
Telemetry [baseline] (8.217 ms) : 0, 8217
Telemetry [candidate] (8.001 ms) : 0, 8001
section profiling
crashtracking [baseline] (1.457 ms) : 0, 1457
crashtracking [candidate] (1.445 ms) : 0, 1445
BytebuddyAgent [baseline] (769.099 ms) : 0, 769099
BytebuddyAgent [candidate] (763.552 ms) : 0, 763552
GlobalTracer [baseline] (234.987 ms) : 0, 234987
GlobalTracer [candidate] (233.26 ms) : 0, 233260
AppSec [baseline] (30.808 ms) : 0, 30808
AppSec [candidate] (30.558 ms) : 0, 30558
Debugger [baseline] (9.018 ms) : 0, 9018
Debugger [candidate] (12.988 ms) : 0, 12988
Remote Config [baseline] (756.653 µs) : 0, 757
Remote Config [candidate] (734.017 µs) : 0, 734
Telemetry [baseline] (14.154 ms) : 0, 14154
Telemetry [candidate] (10.252 ms) : 0, 10252
ProfilingAgent [baseline] (108.929 ms) : 0, 108929
ProfilingAgent [candidate] (108.539 ms) : 0, 108539
Profiling [baseline] (109.592 ms) : 0, 109592
Profiling [candidate] (109.191 ms) : 0, 109191
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master bbujon/config-module
git_commit_date 1757946373 1757948785
git_commit_sha 8f4fb42 b40c033
release_version 1.54.0-SNAPSHOT~8f4fb427ca 1.54.0-SNAPSHOT~b40c033805
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1757950314 1757950314
ci_job_id 1129309898 1129309898
ci_pipeline_id 76493255 76493255
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-tun7ivox 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-tun7ivox 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 3 performance improvements and 1 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 better
[-680.880µs; -427.240µs] or [-8.291%; -5.203%]
unstable
[-28.251op/s; +109.063op/s] or [-5.005%; +19.321%]
7.658ms 604.875op/s 8.212ms 564.469op/s
scenario:load:petclinic:code_origins:high_load better
[-2.277ms; -1.425ms] or [-4.854%; -3.037%]
unstable
[-1.593op/s; +12.423op/s] or [-1.596%; +12.449%]
45.048ms 105.203op/s 46.899ms 99.787op/s
scenario:load:petclinic:profiling:high_load worse
[+1.355ms; +2.388ms] or [+2.879%; +5.073%]
unstable
[-11.278op/s; +3.703op/s] or [-11.342%; +3.724%]
48.939ms 95.650op/s 47.068ms 99.438op/s
scenario:load:petclinic:appsec:high_load better
[-2.507ms; -1.566ms] or [-4.956%; -3.095%]
unstable
[-3.244op/s; +10.969op/s] or [-3.506%; +11.852%]
48.546ms 96.412op/s 50.582ms 92.550op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.27 ms) : 4222, 4319
.   : milestone, 4270,
iast (9.416 ms) : 9260, 9572
.   : milestone, 9416,
iast_FULL (14.026 ms) : 13745, 14308
.   : milestone, 14026,
iast_GLOBAL (10.985 ms) : 10777, 11194
.   : milestone, 10985,
profiling (9.139 ms) : 8977, 9301
.   : milestone, 9139,
tracing (8.212 ms) : 8093, 8331
.   : milestone, 8212,
section candidate
no_agent (4.378 ms) : 4328, 4428
.   : milestone, 4378,
iast (9.417 ms) : 9255, 9579
.   : milestone, 9417,
iast_FULL (14.021 ms) : 13740, 14301
.   : milestone, 14021,
iast_GLOBAL (10.896 ms) : 10701, 11092
.   : milestone, 10896,
profiling (9.49 ms) : 9316, 9664
.   : milestone, 9490,
tracing (7.658 ms) : 7541, 7774
.   : milestone, 7658,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.27 ms [4.222 ms, 4.319 ms] -
iast 9.416 ms [9.26 ms, 9.572 ms] 5.146 ms (120.5%)
iast_FULL 14.026 ms [13.745 ms, 14.308 ms] 9.756 ms (228.5%)
iast_GLOBAL 10.985 ms [10.777 ms, 11.194 ms] 6.715 ms (157.3%)
profiling 9.139 ms [8.977 ms, 9.301 ms] 4.869 ms (114.0%)
tracing 8.212 ms [8.093 ms, 8.331 ms] 3.942 ms (92.3%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.378 ms [4.328 ms, 4.428 ms] -
iast 9.417 ms [9.255 ms, 9.579 ms] 5.039 ms (115.1%)
iast_FULL 14.021 ms [13.74 ms, 14.301 ms] 9.643 ms (220.2%)
iast_GLOBAL 10.896 ms [10.701 ms, 11.092 ms] 6.518 ms (148.9%)
profiling 9.49 ms [9.316 ms, 9.664 ms] 5.112 ms (116.8%)
tracing 7.658 ms [7.541 ms, 7.774 ms] 3.28 ms (74.9%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca
    dateFormat X
    axisFormat %s
section baseline
no_agent (37.164 ms) : 36864, 37465
.   : milestone, 37164,
appsec (50.582 ms) : 50145, 51019
.   : milestone, 50582,
code_origins (46.899 ms) : 46484, 47314
.   : milestone, 46899,
iast (45.706 ms) : 45301, 46110
.   : milestone, 45706,
profiling (47.068 ms) : 46599, 47536
.   : milestone, 47068,
tracing (45.049 ms) : 44663, 45435
.   : milestone, 45049,
section candidate
no_agent (37.557 ms) : 37253, 37860
.   : milestone, 37557,
appsec (48.546 ms) : 48109, 48983
.   : milestone, 48546,
code_origins (45.048 ms) : 44672, 45424
.   : milestone, 45048,
iast (46.354 ms) : 45955, 46753
.   : milestone, 46354,
profiling (48.939 ms) : 48448, 49430
.   : milestone, 48939,
tracing (45.514 ms) : 45101, 45928
.   : milestone, 45514,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.164 ms [36.864 ms, 37.465 ms] -
appsec 50.582 ms [50.145 ms, 51.019 ms] 13.418 ms (36.1%)
code_origins 46.899 ms [46.484 ms, 47.314 ms] 9.734 ms (26.2%)
iast 45.706 ms [45.301 ms, 46.11 ms] 8.541 ms (23.0%)
profiling 47.068 ms [46.599 ms, 47.536 ms] 9.903 ms (26.6%)
tracing 45.049 ms [44.663 ms, 45.435 ms] 7.885 ms (21.2%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.557 ms [37.253 ms, 37.86 ms] -
appsec 48.546 ms [48.109 ms, 48.983 ms] 10.99 ms (29.3%)
code_origins 45.048 ms [44.672 ms, 45.424 ms] 7.492 ms (19.9%)
iast 46.354 ms [45.955 ms, 46.753 ms] 8.798 ms (23.4%)
profiling 48.939 ms [48.448 ms, 49.43 ms] 11.383 ms (30.3%)
tracing 45.514 ms [45.101 ms, 45.928 ms] 7.958 ms (21.2%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master bbujon/config-module
git_commit_date 1757946373 1757948785
git_commit_sha 8f4fb42 b40c033
release_version 1.54.0-SNAPSHOT~8f4fb427ca 1.54.0-SNAPSHOT~b40c033805
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1757950796 1757950796
ci_job_id 1129309899 1129309899
ci_pipeline_id 76493255 76493255
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-jkfa42n1 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-jkfa42n1 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.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.473 ms) : 1461, 1484
.   : milestone, 1473,
appsec (3.678 ms) : 3461, 3896
.   : milestone, 3678,
iast (2.2 ms) : 2137, 2263
.   : milestone, 2200,
iast_GLOBAL (2.238 ms) : 2175, 2301
.   : milestone, 2238,
profiling (2.039 ms) : 1988, 2089
.   : milestone, 2039,
tracing (2.007 ms) : 1959, 2056
.   : milestone, 2007,
section candidate
no_agent (1.474 ms) : 1462, 1485
.   : milestone, 1474,
appsec (3.637 ms) : 3425, 3850
.   : milestone, 3637,
iast (2.196 ms) : 2134, 2259
.   : milestone, 2196,
iast_GLOBAL (2.229 ms) : 2166, 2291
.   : milestone, 2229,
profiling (2.072 ms) : 2020, 2125
.   : milestone, 2072,
tracing (2.024 ms) : 1975, 2073
.   : milestone, 2024,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.473 ms [1.461 ms, 1.484 ms] -
appsec 3.678 ms [3.461 ms, 3.896 ms] 2.206 ms (149.8%)
iast 2.2 ms [2.137 ms, 2.263 ms] 726.931 µs (49.4%)
iast_GLOBAL 2.238 ms [2.175 ms, 2.301 ms] 765.7 µs (52.0%)
profiling 2.039 ms [1.988 ms, 2.089 ms] 565.873 µs (38.4%)
tracing 2.007 ms [1.959 ms, 2.056 ms] 534.613 µs (36.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.474 ms [1.462 ms, 1.485 ms] -
appsec 3.637 ms [3.425 ms, 3.85 ms] 2.163 ms (146.8%)
iast 2.196 ms [2.134 ms, 2.259 ms] 722.382 µs (49.0%)
iast_GLOBAL 2.229 ms [2.166 ms, 2.291 ms] 754.713 µs (51.2%)
profiling 2.072 ms [2.02 ms, 2.125 ms] 598.527 µs (40.6%)
tracing 2.024 ms [1.975 ms, 2.073 ms] 549.964 µs (37.3%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.54.0-SNAPSHOT~b40c033805, baseline=1.54.0-SNAPSHOT~8f4fb427ca
    dateFormat X
    axisFormat %s
section baseline
no_agent (14.956 s) : 14956000, 14956000
.   : milestone, 14956000,
appsec (14.901 s) : 14901000, 14901000
.   : milestone, 14901000,
iast (18.471 s) : 18471000, 18471000
.   : milestone, 18471000,
iast_GLOBAL (17.964 s) : 17964000, 17964000
.   : milestone, 17964000,
profiling (15.32 s) : 15320000, 15320000
.   : milestone, 15320000,
tracing (15.219 s) : 15219000, 15219000
.   : milestone, 15219000,
section candidate
no_agent (15.536 s) : 15536000, 15536000
.   : milestone, 15536000,
appsec (14.821 s) : 14821000, 14821000
.   : milestone, 14821000,
iast (18.229 s) : 18229000, 18229000
.   : milestone, 18229000,
iast_GLOBAL (18.076 s) : 18076000, 18076000
.   : milestone, 18076000,
profiling (15.446 s) : 15446000, 15446000
.   : milestone, 15446000,
tracing (14.819 s) : 14819000, 14819000
.   : milestone, 14819000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.956 s [14.956 s, 14.956 s] -
appsec 14.901 s [14.901 s, 14.901 s] -55.0 ms (-0.4%)
iast 18.471 s [18.471 s, 18.471 s] 3.515 s (23.5%)
iast_GLOBAL 17.964 s [17.964 s, 17.964 s] 3.008 s (20.1%)
profiling 15.32 s [15.32 s, 15.32 s] 364.0 ms (2.4%)
tracing 15.219 s [15.219 s, 15.219 s] 263.0 ms (1.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.536 s [15.536 s, 15.536 s] -
appsec 14.821 s [14.821 s, 14.821 s] -715.0 ms (-4.6%)
iast 18.229 s [18.229 s, 18.229 s] 2.693 s (17.3%)
iast_GLOBAL 18.076 s [18.076 s, 18.076 s] 2.54 s (16.3%)
profiling 15.446 s [15.446 s, 15.446 s] -90.0 ms (-0.6%)
tracing 14.819 s [14.819 s, 14.819 s] -717.0 ms (-4.6%)

@PerfectSlayer PerfectSlayer force-pushed the bbujon/config-module branch 7 times, most recently from 2cd71e0 to 50e5e23 Compare August 28, 2025 13:02
@PerfectSlayer PerfectSlayer marked this pull request as ready for review August 28, 2025 13:03
@PerfectSlayer PerfectSlayer requested review from a team as code owners August 28, 2025 13:03
@PerfectSlayer PerfectSlayer requested review from daniel-mohedano, bric3 and manuel-alvarez-alvarez and removed request for a team August 28, 2025 13:03
Copy link
Contributor

@mhlidd mhlidd left a comment

Choose a reason for hiding this comment

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

Overall LGTM, a few nits and questions

import datadog.trace.civisibility.source.LinesResolver;
import datadog.trace.civisibility.source.SourcePathResolver;
import datadog.trace.util.Strings;
import datadog.trace.util.ConfigStrings;
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
import datadog.trace.util.ConfigStrings;
import static datadog.trace.util.ConfigStrings.propertyNameToSystemPropertyName;

Nit: Replace all calls to the function below

import datadog.trace.civisibility.git.CIProviderGitInfoBuilder
import datadog.trace.civisibility.git.tree.GitClient
import datadog.trace.util.Strings
import datadog.trace.util.ConfigStrings
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
import datadog.trace.util.ConfigStrings
import static datadog.trace.util.ConfigStrings.propertyNameToSystemPropertyName;

Nit: replace all calls to the function below

Comment on lines +1232 to +1249
static {
// Bind telemetry collector to config module before initializing ConfigProvider
OtelEnvMetricCollectorProvider.register(OtelEnvMetricCollectorImpl.getInstance());
}

Copy link
Contributor

Choose a reason for hiding this comment

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

For my understanding, is there a reason that you chose to register the instance here instead of when it is initialized in OtelEnvMetricCollectorImpl?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

instead of when it is initialized in OtelEnvMetricCollectorImpl

There is nobody to initialize it. The code that needs it can't have a dependency on it (to avoid circular dependency).
So the initialization should come from the :internal-api module.

Copy link
Contributor

@bric3 bric3 left a comment

Choose a reason for hiding this comment

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

Added a couple of questions for my understanding.

Comment on lines +177 to +180
static {
// Bind telemetry collector to config module before initializing ConfigProvider
OtelEnvMetricCollectorProvider.register(OtelEnvMetricCollectorImpl.getInstance());
}
Copy link
Contributor

Choose a reason for hiding this comment

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

question: For my understanding this registration code is called here and in Config class, why is that ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The two modules are tightly coupled together.
I inverted the dependency and needed somewhere for the parent module to register the service implementation.
I did it into the two main entry points as object lifecycle are screwed due to heavy use of static and singleton.

@PerfectSlayer PerfectSlayer force-pushed the bbujon/config-module branch 2 times, most recently from cc4709a to 89a6a02 Compare September 15, 2025 11:04
@PerfectSlayer PerfectSlayer enabled auto-merge (squash) September 15, 2025 11:15
Using `utils` for now as it has `:dd-trace-api` as dependency so can't be considered as a `:component`.
@PerfectSlayer PerfectSlayer merged commit 6e03d19 into master Sep 15, 2025
673 of 674 checks passed
@PerfectSlayer PerfectSlayer deleted the bbujon/config-module branch September 15, 2025 20:39
@github-actions github-actions bot added this to the 1.54.0 milestone Sep 15, 2025
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: refactoring
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants