Skip to content

Conversation

@anna-git
Copy link
Contributor

@anna-git anna-git commented Sep 23, 2025

Context

Part of Configuration Inversion (Step 1) - Stack progress:

  1. #7548 - Add GitLab step and JSON configuration file (this PR)
  2. #7688 - Reorganize keys, split config keys and platform keys
  3. #7698 - Generate ConfigurationKeys with source generator
  4. #7689 - Aliases handling and analyzers
  5. #7697 - Replace manual ConfigurationKeys by generated ones in the whole solution

Summary

Adds centralized configuration registry (supported-configurations.json + supported-configurations-docs.yaml) containing ~280 configuration keys with automated GitLab CI validation.

Changes

Configuration Files:

  • supported-configurations.json - Machine-readable registry of all configuration keys with versions, aliases, and deprecations
  • supported-configurations-docs.yaml - Human-readable documentation for each configuration key

CI/CD:

  • Added validate_supported_configurations_local_file step to .gitlab-ci.yml
  • Updated .gitlab/one-pipeline.locked.yaml to reference validation template

File Structure:

{
  "supportedConfigurations": { "DD_TRACE_ENABLED": { "version": ["A"] }, ... },
  "aliases": { "DD_AGENT_HOST": ["DD_TRACE_AGENT_HOSTNAME", ...], ... },
  "deprecations": { "DD_TRACE_ANALYTICS_ENABLED": "Deprecated - ...", ... }
}

Motivation

Provides single source of truth for configuration keys to enable:

  • Automated documentation validation
  • Cross-tracer compatibility checks
  • Configuration migration tooling
  • Automated doc generation

See: Configuration Registry Design Doc

Validation

GitLab CI validates JSON structure, naming conventions, and schema compliance on every build.

Commit Details

2639cf0 - Initial Configuration Registry

  • Added supported-configurations.json with ~280 configuration keys organized by version (A/B/C)
  • Includes aliases section mapping primary keys to deprecated/alternative names
  • Includes deprecations section with deprecation messages
  • Added GitLab CI validation step to ensure file integrity
  • Updated one-pipeline lock file to reference validation template

70e632e - Configuration Documentation

  • Added supported-configurations-docs.yaml with detailed XML documentation for each configuration key
  • Provides human-readable descriptions, default values, and usage examples
  • Includes <seealso> references to relevant code classes
  • Complements the machine-readable JSON with developer-friendly documentation
  • Enables automated generation of configuration documentation from a single source

@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Sep 23, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

Execution-time benchmarks measure the whole time it takes to execute a program. And are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are shown in red. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (85ms)  : crit, 77, 93
     .   : crit, milestone, 85,
    master - mean (72ms)  : 71, 73
     .   : milestone, 72,

    section Baseline
    This PR (7548) - mean (81ms)  : 74, 88
     .   : milestone, 81,
    master - mean (68ms)  : 66, 69
     .   : milestone, 68,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (1,150ms)  : crit, 1054, 1245
     .   : crit, milestone, 1150,
    master - mean (1,040ms)  : 997, 1084
     .   : milestone, 1040,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (124ms)  : crit, 114, 135
     .   : crit, milestone, 124,
    master - mean (106ms)  : 105, 108
     .   : milestone, 106,

    section Baseline
    This PR (7548) - mean (122ms)  : 108, 135
     .   : milestone, 122,
    master - mean (105ms)  : 103, 107
     .   : milestone, 105,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (839ms)  : crit, 787, 890
     .   : crit, milestone, 839,
    master - mean (746ms)  : 720, 772
     .   : milestone, 746,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (112ms)  : crit, 103, 121
     .   : crit, milestone, 112,
    master - mean (94ms)  : 93, 95
     .   : milestone, 94,

    section Baseline
    This PR (7548) - mean (111ms)  : 100, 123
     .   : milestone, 111,
    master - mean (93ms)  : 91, 95
     .   : milestone, 93,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (797ms)  : crit, 724, 870
     .   : crit, milestone, 797,
    master - mean (707ms)  : 672, 742
     .   : milestone, 707,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (111ms)  : crit, 100, 122
     .   : crit, milestone, 111,
    master - mean (92ms)  : 91, 93
     .   : milestone, 92,

    section Baseline
    This PR (7548) - mean (108ms)  : 97, 119
     .   : milestone, 108,
    master - mean (91ms)  : 89, 93
     .   : milestone, 91,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (731ms)  : crit, 692, 769
     .   : crit, milestone, 731,
    master - mean (661ms)  : 646, 676
     .   : milestone, 661,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (201ms)  : 196, 206
     .   : milestone, 201,
    master - mean (195ms)  : 192, 197
     .   : milestone, 195,

    section Baseline
    This PR (7548) - mean (194ms)  : 189, 198
     .   : milestone, 194,
    master - mean (191ms)  : 189, 194
     .   : milestone, 191,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (1,194ms)  : 1121, 1266
     .   : milestone, 1194,
    master - mean (1,156ms)  : 1094, 1218
     .   : milestone, 1156,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (286ms)  : 282, 290
     .   : milestone, 286,
    master - mean (275ms)  : 272, 279
     .   : milestone, 275,

    section Baseline
    This PR (7548) - mean (288ms)  : 281, 296
     .   : milestone, 288,
    master - mean (276ms)  : 271, 281
     .   : milestone, 276,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (971ms)  : 932, 1010
     .   : milestone, 971,
    master - mean (942ms)  : 903, 980
     .   : milestone, 942,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (281ms)  : 272, 290
     .   : milestone, 281,
    master - mean (268ms)  : 264, 272
     .   : milestone, 268,

    section Baseline
    This PR (7548) - mean (282ms)  : 274, 289
     .   : milestone, 282,
    master - mean (267ms)  : 264, 271
     .   : milestone, 267,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (957ms)  : 908, 1006
     .   : milestone, 957,
    master - mean (922ms)  : 875, 969
     .   : milestone, 922,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7548) - mean (286ms)  : crit, 278, 293
     .   : crit, milestone, 286,
    master - mean (266ms)  : 262, 269
     .   : milestone, 266,

    section Baseline
    This PR (7548) - mean (288ms)  : 278, 298
     .   : milestone, 288,
    master - mean (266ms)  : 260, 271
     .   : milestone, 266,

    section CallTarget+Inlining+NGEN
    This PR (7548) - mean (879ms)  : 836, 922
     .   : milestone, 879,
    master - mean (850ms)  : 828, 872
     .   : milestone, 850,

Loading

@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch 3 times, most recently from 6352791 to 234f700 Compare September 23, 2025 13:09
@datadog-official

This comment has been minimized.

@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch 10 times, most recently from 56b17eb to 7fb125e Compare September 29, 2025 17:34
@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch 7 times, most recently from 99d54ea to f88a926 Compare October 8, 2025 13:32
@anna-git anna-git changed the title [Config Inversion] Add gitlab step and json configuration file [Config Registry] Add gitlab step and json configuration file Oct 8, 2025
@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch from f88a926 to 1cfe73f Compare October 8, 2025 17:52
@pr-commenter
Copy link

pr-commenter bot commented Oct 8, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7548 compared to master:

  • 2 benchmarks are slower, with geometric mean 1.783
  • 8 benchmarks have fewer allocations
  • 2 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7548

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net6.0 5.49 KB 5.44 KB -49 B -0.89%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.5μs 59.8ns 406ns 0 0 0 5.49 KB
master StartStopWithChild netcoreapp3.1 13.5μs 69.7ns 334ns 0 0 0 5.72 KB
master StartStopWithChild net472 22.3μs 122ns 711ns 0.98 0.327 0.109 6.05 KB
#7548 StartStopWithChild net6.0 10.5μs 59.5ns 421ns 0 0 0 5.44 KB
#7548 StartStopWithChild netcoreapp3.1 14.1μs 67.2ns 277ns 0 0 0 5.73 KB
#7548 StartStopWithChild net472 21.9μs 122ns 730ns 1.07 0.32 0.107 6.04 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 935μs 96ns 346ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 220ns 853ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 582ns 2.25μs 0 0 0 3.31 KB
#7548 WriteAndFlushEnrichedTraces net6.0 930μs 229ns 889ns 0 0 0 2.71 KB
#7548 WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 480ns 1.86μs 0 0 0 2.7 KB
#7548 WriteAndFlushEnrichedTraces net472 1.2ms 106ns 409ns 0 0 0 3.31 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleSimpleBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleSimpleBody net472 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody net472 N/A N/A N/A NaN NaN NaN 0 b
master ObjectExtractorSimpleBody net6.0 330ns 0.555ns 2.08ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 409ns 0.489ns 1.83ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 299ns 0.0231ns 0.0834ns 0.0438 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.27μs 24.5ns 95ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.94μs 8.1ns 31.4ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.61μs 5.12ns 19.8ns 0.595 0 0 3.8 KB
#7548 AllCycleSimpleBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7548 AllCycleSimpleBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7548 AllCycleSimpleBody net472 N/A N/A N/A NaN NaN NaN 0 b
#7548 AllCycleMoreComplexBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7548 AllCycleMoreComplexBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7548 AllCycleMoreComplexBody net472 N/A N/A N/A NaN NaN NaN 0 b
#7548 ObjectExtractorSimpleBody net6.0 325ns 1.75ns 9.43ns 0 0 0 280 B
#7548 ObjectExtractorSimpleBody netcoreapp3.1 396ns 2.21ns 13.1ns 0 0 0 272 B
#7548 ObjectExtractorSimpleBody net472 305ns 0.0337ns 0.131ns 0.0442 0 0 281 B
#7548 ObjectExtractorMoreComplexBody net6.0 6.33μs 3.78ns 14.6ns 0 0 0 3.78 KB
#7548 ObjectExtractorMoreComplexBody netcoreapp3.1 7.84μs 35.1ns 136ns 0 0 0 3.69 KB
#7548 ObjectExtractorMoreComplexBody net472 6.69μs 2.01ns 7.79ns 0.571 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 75.4μs 271ns 1.05μs 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.7μs 27.7ns 107ns 0 0 0 32.4 KB
master EncodeArgs net472 109μs 53.7ns 208ns 4.91 0 0 32.51 KB
master EncodeLegacyArgs net6.0 144μs 6.8ns 26.3ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 202μs 570ns 2.21μs 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 33.9ns 122ns 0 0 0 2.17 KB
#7548 EncodeArgs net6.0 77.3μs 125ns 483ns 0 0 0 32.4 KB
#7548 EncodeArgs netcoreapp3.1 98.9μs 254ns 986ns 0 0 0 32.4 KB
#7548 EncodeArgs net472 109μs 7.42ns 25.7ns 4.9 0 0 32.51 KB
#7548 EncodeLegacyArgs net6.0 145μs 73.2ns 274ns 0 0 0 2.15 KB
#7548 EncodeLegacyArgs netcoreapp3.1 198μs 179ns 668ns 0 0 0 2.14 KB
#7548 EncodeLegacyArgs net472 266μs 307ns 1.19μs 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7548

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.430 298,308.56 725,024.40

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 396μs 64.5ns 250ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 410μs 67.3ns 252ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 431μs 34.7ns 125ns 0 0 0 4.68 KB
master RunWafRealisticBenchmarkWithAttack net6.0 288μs 48.4ns 175ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 298μs 163ns 610ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 314μs 27.5ns 99.2ns 0 0 0 2.29 KB
#7548 RunWafRealisticBenchmark net6.0 391μs 56.4ns 218ns 0 0 0 4.55 KB
#7548 RunWafRealisticBenchmark netcoreapp3.1 409μs 51.4ns 192ns 0 0 0 4.48 KB
#7548 RunWafRealisticBenchmark net472 430μs 23.5ns 88ns 0 0 0 4.68 KB
#7548 RunWafRealisticBenchmarkWithAttack net6.0 286μs 32.4ns 117ns 0 0 0 2.24 KB
#7548 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 682μs 12.4μs 124μs 0 0 0 2.22 KB
#7548 RunWafRealisticBenchmarkWithAttack net472 310μs 34.6ns 134ns 0 0 0 2.29 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61μs 63.7ns 229ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.9μs 65ns 243ns 0 0 0 17.42 KB
master SendRequest net472 0.000221ns 0.000221ns 0.000858ns 0 0 0 0 b
#7548 SendRequest net6.0 61.5μs 313ns 1.47μs 0 0 0 14.52 KB
#7548 SendRequest netcoreapp3.1 71.1μs 74.3ns 288ns 0 0 0 17.42 KB
#7548 SendRequest net472 0.00225ns 0.0011ns 0.00427ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7548

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 48 B 47 B -1 B -2.08%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 6 B 4 B -2 B -33.33%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 5 B 3 B -2 B -40.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.93ms 2.64μs 10.2μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.28ms 11.6μs 53.3μs 0 0 0 640.09 KB
master OriginalCharSlice net472 2.63ms 703ns 2.54μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.41ms 104ns 403ns 0 0 0 6 B
master OptimizedCharSlice netcoreapp3.1 1.75ms 479ns 1.85μs 0 0 0 1 B
master OptimizedCharSlice net472 1.94ms 270ns 1.04μs 0 0 0 73 B
master OptimizedCharSliceWithPool net6.0 875μs 116ns 450ns 0 0 0 5 B
master OptimizedCharSliceWithPool netcoreapp3.1 798μs 124ns 480ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.13ms 102ns 397ns 0 0 0 48 B
#7548 OriginalCharSlice net6.0 1.88ms 5.77μs 21.6μs 0 0 0 640.01 KB
#7548 OriginalCharSlice netcoreapp3.1 2.13ms 7.45μs 28.8μs 0 0 0 640 KB
#7548 OriginalCharSlice net472 2.72ms 1.13μs 4.36μs 100 0 0 641.95 KB
#7548 OptimizedCharSlice net6.0 1.37ms 146ns 564ns 0 0 0 4 B
#7548 OptimizedCharSlice netcoreapp3.1 1.71ms 633ns 2.45μs 0 0 0 1 B
#7548 OptimizedCharSlice net472 1.91ms 172ns 644ns 0 0 0 73 B
#7548 OptimizedCharSliceWithPool net6.0 803μs 63.9ns 247ns 0 0 0 3 B
#7548 OptimizedCharSliceWithPool netcoreapp3.1 880μs 124ns 464ns 0 0 0 0 b
#7548 OptimizedCharSliceWithPool net472 1.14ms 99.2ns 384ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Slower ⚠️ More allocations ⚠️

Slower ⚠️ in #7548

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.308 642,952.40 841,139.66

More allocations ⚠️ in #7548

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 41.96 KB 42.24 KB 287 B 0.68%

Fewer allocations 🎉 in #7548

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 56.56 KB 56.18 KB -376 B -0.66%
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 42.6 KB 41.69 KB -910 B -2.14%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 665μs 2.63μs 9.85μs 0 0 0 42.6 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 640μs 2.96μs 10.7μs 0 0 0 41.96 KB
master WriteAndFlushEnrichedTraces net472 978μs 4.14μs 16μs 8.33 0 0 56.56 KB
#7548 WriteAndFlushEnrichedTraces net6.0 717μs 2.36μs 9.16μs 0 0 0 41.69 KB
#7548 WriteAndFlushEnrichedTraces netcoreapp3.1 806μs 6.48μs 62.5μs 0 0 0 42.24 KB
#7548 WriteAndFlushEnrichedTraces net472 874μs 3.84μs 14.4μs 8.33 0 0 56.18 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.83μs 9.13ns 38.7ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.6μs 8.02ns 31ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.88μs 4.02ns 16.1ns 0.143 0.0143 0 987 B
#7548 ExecuteNonQuery net6.0 1.86μs 8.93ns 36.8ns 0 0 0 1.02 KB
#7548 ExecuteNonQuery netcoreapp3.1 2.58μs 1.06ns 3.98ns 0 0 0 1.02 KB
#7548 ExecuteNonQuery net472 2.88μs 4.57ns 17.7ns 0.145 0.0145 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.67μs 7.01ns 26.2ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.21μs 10.3ns 41.2ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.65μs 1.73ns 6.69ns 0.164 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.86μs 8.41ns 31.5ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.34μs 10.7ns 41.5ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.85μs 5.9ns 22.9ns 0.171 0 0 1.1 KB
#7548 CallElasticsearch net6.0 1.75μs 7.8ns 29.2ns 0 0 0 1.03 KB
#7548 CallElasticsearch netcoreapp3.1 2.22μs 10.3ns 41.4ns 0 0 0 1.03 KB
#7548 CallElasticsearch net472 3.59μs 4.33ns 16.8ns 0.161 0 0 1.04 KB
#7548 CallElasticsearchAsync net6.0 1.83μs 8.09ns 30.3ns 0 0 0 1.01 KB
#7548 CallElasticsearchAsync netcoreapp3.1 2.41μs 10.1ns 39ns 0 0 0 1.08 KB
#7548 CallElasticsearchAsync net472 3.66μs 3.63ns 14.1ns 0.164 0 0 1.1 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.84μs 6.75ns 24.4ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.5μs 8.39ns 32.5ns 0 0 0 952 B
master ExecuteAsync net472 2.62μs 5.25ns 20.4ns 0.143 0 0 915 B
#7548 ExecuteAsync net6.0 1.92μs 7.09ns 26.5ns 0 0 0 952 B
#7548 ExecuteAsync netcoreapp3.1 2.51μs 6.21ns 24.1ns 0 0 0 952 B
#7548 ExecuteAsync net472 2.64μs 1.3ns 4.69ns 0.145 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 7.06μs 16.7ns 62.4ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.43μs 6.39ns 23ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 13.9ns 53.6ns 0.491 0 0 3.18 KB
#7548 SendAsync net6.0 6.79μs 15.6ns 58.5ns 0 0 0 2.36 KB
#7548 SendAsync netcoreapp3.1 8.26μs 13.9ns 53.7ns 0 0 0 2.9 KB
#7548 SendAsync net472 12μs 9.34ns 34.9ns 0.477 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7548

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 254.69 KB 257.5 KB 2.81 KB 1.10%

Fewer allocations 🎉 in #7548

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.44 KB 43.1 KB -336 B -0.77%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 43.63 KB 42.76 KB -872 B -2.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 41.4μs 164ns 570ns 0 0 0 43.44 KB
master StringConcatBenchmark netcoreapp3.1 49.1μs 256ns 1.17μs 0 0 0 43.63 KB
master StringConcatBenchmark net472 58.4μs 270ns 1.05μs 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 501μs 1.84μs 7.37μs 0 0 0 277.94 KB
master StringConcatAspectBenchmark netcoreapp3.1 491μs 1.67μs 6.26μs 0 0 0 254.69 KB
master StringConcatAspectBenchmark net472 405μs 2.17μs 11.3μs 0 0 0 278.53 KB
#7548 StringConcatBenchmark net6.0 46.6μs 402ns 3.78μs 0 0 0 43.1 KB
#7548 StringConcatBenchmark netcoreapp3.1 52.6μs 732ns 7.17μs 0 0 0 42.76 KB
#7548 StringConcatBenchmark net472 57.7μs 220ns 825ns 0 0 0 65.54 KB
#7548 StringConcatAspectBenchmark net6.0 488μs 2.27μs 8.48μs 0 0 0 277.37 KB
#7548 StringConcatAspectBenchmark netcoreapp3.1 506μs 2.02μs 7.56μs 0 0 0 257.5 KB
#7548 StringConcatAspectBenchmark net472 407μs 2.31μs 16.7μs 0 0 0 278.53 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.71μs 12.6ns 50.5ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.52μs 15.8ns 61.1ns 0 0 0 1.7 KB
master EnrichedLog net472 3.81μs 2.01ns 7.77ns 0.247 0 0 1.64 KB
#7548 EnrichedLog net6.0 2.66μs 2.48ns 9.61ns 0 0 0 1.7 KB
#7548 EnrichedLog netcoreapp3.1 3.75μs 14.3ns 53.5ns 0 0 0 1.7 KB
#7548 EnrichedLog net472 3.91μs 3.97ns 15.4ns 0.252 0 0 1.64 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 129μs 492ns 1.84μs 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 130μs 265ns 954ns 0 0 0 4.31 KB
master EnrichedLog net472 168μs 155ns 581ns 0 0 0 4.52 KB
#7548 EnrichedLog net6.0 124μs 652ns 3.2μs 0 0 0 4.31 KB
#7548 EnrichedLog netcoreapp3.1 127μs 135ns 505ns 0 0 0 4.31 KB
#7548 EnrichedLog net472 167μs 160ns 619ns 0 0 0 4.51 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5.02μs 17.4ns 65.2ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.68μs 13.5ns 52.1ns 0 0 0 2.26 KB
master EnrichedLog net472 7.53μs 5.43ns 21ns 0.299 0 0 2.08 KB
#7548 EnrichedLog net6.0 4.98μs 23.1ns 86.3ns 0 0 0 2.26 KB
#7548 EnrichedLog netcoreapp3.1 6.83μs 20.2ns 78.3ns 0 0 0 2.26 KB
#7548 EnrichedLog net472 7.66μs 5.35ns 20.7ns 0.306 0 0 2.08 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.95μs 10.6ns 54.1ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.62μs 12.4ns 52.6ns 0 0 0 1.2 KB
master SendReceive net472 3.02μs 2.72ns 10.5ns 0.18 0 0 1.2 KB
#7548 SendReceive net6.0 1.93μs 9.59ns 42.9ns 0 0 0 1.2 KB
#7548 SendReceive netcoreapp3.1 2.6μs 10.8ns 41.6ns 0 0 0 1.2 KB
#7548 SendReceive net472 3.09μs 0.874ns 3.39ns 0.186 0 0 1.2 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.3μs 7.02ns 27.2ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.65μs 17.4ns 67.5ns 0 0 0 1.63 KB
master EnrichedLog net472 6.59μs 7.7ns 28.8ns 0.295 0 0 2.03 KB
#7548 EnrichedLog net6.0 4.31μs 9.05ns 35.1ns 0 0 0 1.58 KB
#7548 EnrichedLog netcoreapp3.1 5.58μs 7.87ns 30.5ns 0 0 0 1.63 KB
#7548 EnrichedLog net472 6.72μs 9.02ns 34.9ns 0.303 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 768ns 4ns 19.6ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 953ns 4.91ns 24.1ns 0 0 0 576 B
master StartFinishSpan net472 947ns 0.2ns 0.72ns 0.09 0 0 578 B
master StartFinishScope net6.0 922ns 0.233ns 0.904ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.2μs 4.69ns 18.1ns 0 0 0 696 B
master StartFinishScope net472 1.15μs 0.245ns 0.882ns 0.103 0 0 658 B
#7548 StartFinishSpan net6.0 777ns 3.62ns 14.9ns 0 0 0 576 B
#7548 StartFinishSpan netcoreapp3.1 965ns 5.01ns 25.5ns 0 0 0 576 B
#7548 StartFinishSpan net472 964ns 0.162ns 0.628ns 0.0915 0 0 578 B
#7548 StartFinishScope net6.0 907ns 4.51ns 19.1ns 0 0 0 696 B
#7548 StartFinishScope netcoreapp3.1 1.17μs 5.67ns 24.1ns 0 0 0 696 B
#7548 StartFinishScope net472 1.17μs 0.331ns 1.28ns 0.0996 0 0 658 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.08μs 5.04ns 20.1ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.41μs 6.88ns 31.5ns 0 0 0 696 B
master RunOnMethodBegin net472 1.49μs 0.871ns 3.37ns 0.104 0 0 658 B
#7548 RunOnMethodBegin net6.0 1.05μs 5.16ns 23.1ns 0 0 0 696 B
#7548 RunOnMethodBegin netcoreapp3.1 1.41μs 7.63ns 40.4ns 0 0 0 696 B
#7548 RunOnMethodBegin net472 1.44μs 1.1ns 4.25ns 0.1 0 0 658 B

@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch from 1cfe73f to 096952f Compare October 10, 2025 11:32
@anna-git anna-git marked this pull request as ready for review October 10, 2025 14:02
@anna-git anna-git changed the title [Config Registry] Add gitlab step and json configuration file [Config Registry] Add gitlab step and json configuration file and yaml for doc Oct 21, 2025
@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch 2 times, most recently from f45278f to d40a9fb Compare October 22, 2025 18:14
@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch 3 times, most recently from 4b53dd1 to 70e632e Compare October 22, 2025 21:31
@anna-git anna-git marked this pull request as ready for review October 22, 2025 22:25
@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch from 70e632e to d88e3da Compare October 23, 2025 13:26
@anna-git anna-git changed the title [Config Registry] Add gitlab step and json configuration file and yaml for doc [Config Registry] 1/5 Add gitlab step and json configuration file and yaml for doc Oct 23, 2025
Copy link
Contributor

Choose a reason for hiding this comment

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

Where do our other tracing libraries have their declared configurations files? It seems a little strange to me to have a content file like this inside a subfolder alongside existing code.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I thought perhaps adding it to the Configuration folder made sense? but I don't mind changing it if you think it should be somewhere else, at the root in the Solution Items?
in dd-trace-js it's in packages/dd-trace/src/supported-configurations.json
in java, it's in a metadata folder
in ruby it's at the root..

Copy link
Contributor

Choose a reason for hiding this comment

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

Since this would be difficult to validate 100%, here's what I did to quickly validate this and feel confident about the contents:

  • I selected a sample of 5-10 configuration keys here and compared by eye the description with the contents in the existing configuration keys XML.
  • I did a CTRL+F in my local tracer/src/Datadog.Trace/Configuration folder for const string and removed non-applicable variables (non-DD/non-OTEL configs) results from my search. That left 256 entries, and I compared that count to CTRL+F : | in this doc, which had 253 results, so that's close enough for my brute force method.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

thank you! yes, from what I noticed, just a few entries dont have docs, but we can add it later

"version": [
"A"
],
"product": "DirectLogSubmission"
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we update the product name later? Or does this need to be decided right now and be set in stone? The reason I ask is because I think the various DD_LOGS_DIRECT_SUBMISSION_* flags and DD_LOGS_OTEL_ENABLED could all be categorized as a "Logs" product, but I would rather have that as a separate conversation and not block your work

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, the product is something I added for the dotnet tracer to reflect already existing inner classes but it's not set in stone. But that's a good point, how to refactor autogenerated elements? From experience, you can ctrl+R,R on the inner class in the ConfigurationKeys.g.cs which will refactor everywhere in the solution, then change find and replace product name in the supported-configurations.json, so that the newly generated file is the same as what you just refactored. Not sure this is clear lol, I think I'll add something in the docs about this

Copy link
Contributor

@zacharycmontoya zacharycmontoya 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. There's a lot of configurations so I listed my review process in my comments 😅

@lucaspimentel
Copy link
Member

@codex review

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

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.

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +1537 to +1543
"DD_TRACE_PROPAGATION_STYLE_EXTRACT": [
"DD_PROPAGATION_STYLE_EXTRACT",
"DD_TRACE_PROPAGATION_STYLE"
],
"DD_TRACE_PROPAGATION_STYLE_INJECT": [
"DD_PROPAGATION_STYLE_INJECT",
"DD_TRACE_PROPAGATION_STYLE"
],

Choose a reason for hiding this comment

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

P1 Badge Remove ambiguous aliases that reuse canonical keys

The alias table introduces names that are already defined as primary configuration keys and even maps the same alias to multiple entries. For instance, DD_TRACE_PROPAGATION_STYLE is declared as a standalone key earlier in the file but here it is also listed as an alias for both DD_TRACE_PROPAGATION_STYLE_EXTRACT and DD_TRACE_PROPAGATION_STYLE_INJECT; likewise OTEL_EXPORTER_OTLP_PROTOCOL is reused for the metrics and logs variants. Downstream tooling that resolves aliases cannot deterministically choose which canonical key to use, so one of the entries will be dropped or the wrong configuration documented. Each alias should point to exactly one canonical key, and alias names should not also appear as canonical keys.

Useful? React with 👍 / 👎.

Copy link
Member

Choose a reason for hiding this comment

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

I'm gonna 👍🏽 because it does bring up an interesting point about

DD_TRACE_PROPAGATION_STYLE
DD_TRACE_PROPAGATION_STYLE_EXTRACT
DD_TRACE_PROPAGATION_STYLE_INJECT

DD_TRACE_PROPAGATION_STYLE really is just a fallback (alias) for the other two.

Copy link
Contributor Author

@anna-git anna-git Oct 27, 2025

Choose a reason for hiding this comment

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

I could remove DD_TRACE_PROPAGATION_STYLE
I still need OTEL_EXPORTER_OTLP_PROTOCOL that is directly used in TracerSettings

The thing is if they're not listed as keys above, they wont generate a constant in ConfigurationKeys later on, and if it's needed directly without fallbacks by the ConfigurationBuilder like it is for OtlpGeneralProtocol then there needs to be a ConfigurationKeys constant

Copy link
Member

@lucaspimentel lucaspimentel left a comment

Choose a reason for hiding this comment

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

Looks like this small grammatic error was copy/pasted many times 😅

Default is value is...

@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch 2 times, most recently from 63f5f33 to bb9d5d8 Compare October 27, 2025 19:21
@anna-git anna-git force-pushed the anna/config-inversion-supported-config-file branch from bb9d5d8 to f819c41 Compare October 28, 2025 14:33
@anna-git anna-git merged commit 3ba93a6 into master Oct 28, 2025
152 checks passed
@anna-git anna-git deleted the anna/config-inversion-supported-config-file branch October 28, 2025 17:37
@github-actions github-actions bot added this to the vNext-v3 milestone Oct 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants