- 
                Notifications
    You must be signed in to change notification settings 
- Fork 150
[Config Registry] 1/5 Add gitlab step and json configuration file and yaml for doc #7548
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| 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: 
 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,
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,
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,
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,
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,
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,
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,
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,
 | 
6352791    to
    234f700      
    Compare
  
    
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
56b17eb    to
    7fb125e      
    Compare
  
    99d54ea    to
    f88a926      
    Compare
  
    f88a926    to
    1cfe73f      
    Compare
  
    | BenchmarksBenchmarks Report for benchmark platform 🐌Benchmarks for #7548 compared to master: 
 The following thresholds were used for comparing the benchmark speeds: 
 Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.ActivityBenchmark - Same speed ✔️ Fewer allocations 🎉
 | 
| 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 
 
| 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% 
 
| 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% 
 
| Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality | 
|---|---|---|---|---|
| Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 | 1.308 | 642,952.40 | 841,139.66 | 
| Benchmark | Base Allocated | Diff Allocated | Change | Change % | 
|---|---|---|---|---|
| Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 | 41.96 KB | 42.24 KB | 287 B | 0.68% | 
| 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% 
 
| 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% | 
| 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 | 
1cfe73f    to
    096952f      
    Compare
  
    f45278f    to
    d40a9fb      
    Compare
  
    4b53dd1    to
    70e632e      
    Compare
  
    70e632e    to
    d88e3da      
    Compare
  
    There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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..
There was a problem hiding this comment.
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/Configurationfolder forconst stringand 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.
There was a problem hiding this comment.
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" | 
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this 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 😅
| @codex review | 
There was a problem hiding this 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".
| "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" | ||
| ], | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
  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 👍 / 👎.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this 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...
        
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
              
                Outdated
          
            Show resolved
            Hide resolved
        
      63f5f33    to
    bb9d5d8      
    Compare
  
    add supported configurations file and ci step
bb9d5d8    to
    f819c41      
    Compare
  
    … keys (#7688) ## Context Part of **Configuration Inversion (Step 2)** - Stack progress: 1. [#7548](#7548) - Add GitLab step and JSON configuration file 2. **→ [#7688](#7688) - [Config registry] Reorganize keys, split config keys and platform keys(this PR)** 3. [#7698](#7698) - Generate ConfigurationKeys with source generator 4. [#7689](#7689) - Aliases handling and analyzers 5. [#7697](#7697) - Replace manual ConfigurationKeys by generated ones in the whole solution ## Summary Separates platform-specific environment variables into `PlatformKeys` class and adds Roslyn analyzers to enforce proper usage of configuration keys throughout the codebase. ## Changes **Platform Keys Separation:** - Created `PlatformKeys` class for external platform environment variables (AWS, Azure, GCP, Kubernetes, CLR Profiler), those that don't start with DD_ and come from other platforms. - Updated all references throughout codebase to use `PlatformKeys` for platform-specific variables - Keeps `ConfigurationKeys` focused only on Datadog configuration **Roslyn Analyzers:** - **DD0007**: Platform key analyzer - Enforces use of `PlatformKeys` for external platform environment variables - **DD0008**: ConfigurationBuilder analyzer - Enforces use of `ConfigurationKeys` or `PlatformKeys` constants in `ConfigurationBuilder.WithKeys()` calls - Prevents hardcoded strings and ensures type safety **Configuration Mapping:** - Added `configuration_keys_mapping.json` to map environment variable names to their `ConfigurationKeys` constant names, so that we avoid renaming hundreds of variables according to automatically source generated deducted ones. - Enables preservation of original constant names during refactoring - Supports source generator integration **Code Updates:** - Updated `TracerSettings`, test files, and profiler code to use `PlatformKeys` - Replaced manual `ConfigurationKeys` with generated version from `supported-configurations.json` - Added missing `DD_TRACE_LOG_PATH` to configuration registry ## Motivation Ensures clean separation between Datadog and platform configuration by: - Preventing accidental mixing of platform and Datadog keys - Enforcing compile-time validation of configuration key usage - Making it clear which keys are owned by Datadog vs external platforms - Catching configuration errors at build time instead of runtime ## Validation - Roslyn analyzers run on every build - All existing tests pass with updated key references - Analyzers report clear diagnostic messages for violations ## Related Work This PR builds on the configuration registry foundation established in #7548: - **Commit `2639cf0`** added `supported-configurations.json` with ~280 keys, aliases, deprecations, and GitLab CI validation - **Commit `70e632e`** added [supported-configurations-docs.yaml](cci:7://file:///Users/anna.yafi/go/src/github.com/DataDog/dd-trace-dotnet3/tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml:0:0-0:0) with XML documentation for automated doc generation
Context
Part of Configuration Inversion (Step 1) - Stack progress:
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 deprecationsCI/CD:
validate_supported_configurations_local_filestep to.gitlab-ci.yml.gitlab/one-pipeline.locked.yamlto reference validation templateFile 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:
See: Configuration Registry Design Doc
Validation
GitLab CI validates JSON structure, naming conventions, and schema compliance on every build.
Commit Details
2639cf0- Initial Configuration Registrysupported-configurations.jsonwith ~280 configuration keys organized by version (A/B/C)aliasessection mapping primary keys to deprecated/alternative namesdeprecationssection with deprecation messages70e632e- Configuration Documentation<seealso>references to relevant code classes