[v3] [Tracing] fix tag name normalization in DD_TRACE_HEADER_TAGS#4599
Conversation
Datadog ReportBranch report: ✅ |
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.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4599) - mean (75ms) : 67, 82
. : milestone, 75,
master - mean (70ms) : 60, 80
. : milestone, 70,
section CallTarget+Inlining+NGEN
This PR (4599) - mean (995ms) : 969, 1021
. : milestone, 995,
master - mean (959ms) : 937, 981
. : milestone, 959,
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4599) - mean (112ms) : 109, 114
. : milestone, 112,
master - mean (105ms) : 101, 109
. : milestone, 105,
section CallTarget+Inlining+NGEN
This PR (4599) - mean (720ms) : 697, 742
. : milestone, 720,
master - mean (685ms) : 664, 707
. : milestone, 685,
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4599) - mean (95ms) : 92, 99
. : milestone, 95,
master - mean (89ms) : 84, 93
. : milestone, 89,
section CallTarget+Inlining+NGEN
This PR (4599) - mean (671ms) : 642, 699
. : milestone, 671,
master - mean (643ms) : 618, 668
. : milestone, 643,
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4599) - mean (189ms) : 186, 192
. : milestone, 189,
master - mean (189ms) : 186, 192
. : milestone, 189,
section CallTarget+Inlining+NGEN
This PR (4599) - mean (1,055ms) : 1028, 1081
. : milestone, 1055,
master - mean (1,058ms) : 1034, 1082
. : milestone, 1058,
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4599) - mean (272ms) : 268, 276
. : milestone, 272,
master - mean (273ms) : 269, 277
. : milestone, 273,
section CallTarget+Inlining+NGEN
This PR (4599) - mean (1,039ms) : 1016, 1062
. : milestone, 1039,
master - mean (1,042ms) : 1017, 1066
. : milestone, 1042,
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat X
axisFormat %s
todayMarker off
section Baseline
This PR (4599) - mean (262ms) : 258, 266
. : milestone, 262,
master - mean (262ms) : 258, 266
. : milestone, 262,
section CallTarget+Inlining+NGEN
This PR (4599) - mean (1,008ms) : 987, 1029
. : milestone, 1008,
master - mean (1,007ms) : 982, 1032
. : milestone, 1007,
|
Benchmarks Report 🐌Benchmarks for #4599 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 ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️Raw results
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Slower
|
| Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
|---|---|---|---|---|
| Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody‑netcoreapp3.1 | 1.116 | 196.71 | 219.51 |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | AllCycleSimpleBody |
net6.0 | 39.1μs | 22.3ns | 86.5ns | 0.0198 | 0 | 0 | 2.36 KB |
| master | AllCycleSimpleBody |
netcoreapp3.1 | 42.2μs | 62.8ns | 243ns | 0.021 | 0 | 0 | 2.34 KB |
| master | AllCycleSimpleBody |
net472 | 45μs | 18.1ns | 67.8ns | 0.379 | 0 | 0 | 2.41 KB |
| master | AllCycleMoreComplexBody |
net6.0 | 203μs | 105ns | 394ns | 0.1 | 0 | 0 | 9.84 KB |
| master | AllCycleMoreComplexBody |
netcoreapp3.1 | 211μs | 171ns | 660ns | 0.105 | 0 | 0 | 9.73 KB |
| master | AllCycleMoreComplexBody |
net472 | 228μs | 70.5ns | 273ns | 1.47 | 0 | 0 | 9.91 KB |
| master | ObjectExtractorSimpleBody |
net6.0 | 142ns | 0.151ns | 0.565ns | 0.00397 | 0 | 0 | 280 B |
| master | ObjectExtractorSimpleBody |
netcoreapp3.1 | 197ns | 0.195ns | 0.757ns | 0.00368 | 0 | 0 | 272 B |
| master | ObjectExtractorSimpleBody |
net472 | 171ns | 0.155ns | 0.599ns | 0.0446 | 0 | 0 | 281 B |
| master | ObjectExtractorMoreComplexBody |
net6.0 | 3.08μs | 2.42ns | 9.07ns | 0.0536 | 0 | 0 | 3.78 KB |
| master | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 4.06μs | 2.51ns | 9.4ns | 0.0486 | 0 | 0 | 3.69 KB |
| master | ObjectExtractorMoreComplexBody |
net472 | 3.78μs | 2.51ns | 9.04ns | 0.602 | 0.00568 | 0 | 3.8 KB |
| #4599 | AllCycleSimpleBody |
net6.0 | 39.3μs | 145ns | 562ns | 0.0193 | 0 | 0 | 2.36 KB |
| #4599 | AllCycleSimpleBody |
netcoreapp3.1 | 41.9μs | 13.8ns | 49.6ns | 0.0207 | 0 | 0 | 2.34 KB |
| #4599 | AllCycleSimpleBody |
net472 | 44.7μs | 15.7ns | 60.7ns | 0.381 | 0 | 0 | 2.41 KB |
| #4599 | AllCycleMoreComplexBody |
net6.0 | 204μs | 81.4ns | 315ns | 0.102 | 0 | 0 | 9.84 KB |
| #4599 | AllCycleMoreComplexBody |
netcoreapp3.1 | 211μs | 101ns | 363ns | 0.105 | 0 | 0 | 9.73 KB |
| #4599 | AllCycleMoreComplexBody |
net472 | 247μs | 75.9ns | 284ns | 1.5 | 0 | 0 | 9.91 KB |
| #4599 | ObjectExtractorSimpleBody |
net6.0 | 142ns | 0.0443ns | 0.172ns | 0.00394 | 0 | 0 | 280 B |
| #4599 | ObjectExtractorSimpleBody |
netcoreapp3.1 | 220ns | 0.145ns | 0.563ns | 0.00365 | 0 | 0 | 272 B |
| #4599 | ObjectExtractorSimpleBody |
net472 | 165ns | 0.108ns | 0.406ns | 0.0446 | 0 | 0 | 281 B |
| #4599 | ObjectExtractorMoreComplexBody |
net6.0 | 3.09μs | 7.96ns | 30.8ns | 0.0535 | 0 | 0 | 3.78 KB |
| #4599 | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 3.98μs | 1.39ns | 5.19ns | 0.0498 | 0 | 0 | 3.69 KB |
| #4599 | ObjectExtractorMoreComplexBody |
net472 | 3.77μs | 2.8ns | 10.9ns | 0.602 | 0.00568 | 0 | 3.8 KB |
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | RunWaf(args=NestedMap (10)) |
net6.0 | 52.4μs | 25.1ns | 94.1ns | 0.227 | 0 | 0 | 16.66 KB |
| master | RunWaf(args=NestedMap (10)) |
netcoreapp3.1 | 68.4μs | 172ns | 665ns | 0.205 | 0 | 0 | 16.65 KB |
| master | RunWaf(args=NestedMap (10)) |
net472 | 97.3μs | 67.5ns | 262ns | 2.63 | 0.0975 | 0 | 16.73 KB |
| master | RunWafTwice(args=NestedMap (10)) |
net6.0 | 55.8μs | 22.7ns | 85ns | 0.222 | 0 | 0 | 17.33 KB |
| master | RunWafTwice(args=NestedMap (10)) |
netcoreapp3.1 | 75μs | 87.5ns | 339ns | 0.218 | 0 | 0 | 17.31 KB |
| master | RunWafTwice(args=NestedMap (10)) |
net472 | 111μs | 229ns | 889ns | 2.74 | 0.107 | 0 | 17.42 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 104μs | 589ns | 4.08μs | 0.254 | 0 | 0 | 19.49 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 123μs | 549ns | 2.13μs | 0.237 | 0 | 0 | 19.44 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 149μs | 90.7ns | 351ns | 3.13 | 0.149 | 0 | 19.72 KB |
| master | RunWaf(args=NestedMap (100)) |
net6.0 | 109μs | 77.9ns | 302ns | 0.42 | 0 | 0 | 33.35 KB |
| master | RunWaf(args=NestedMap (100)) |
netcoreapp3.1 | 137μs | 736ns | 3.82μs | 0.475 | 0 | 0 | 33.92 KB |
| master | RunWaf(args=NestedMap (100)) |
net472 | 195μs | 564ns | 2.18μs | 5.42 | 0.381 | 0 | 34.26 KB |
| master | RunWafTwice(args=NestedMap (100)) |
net6.0 | 114μs | 30ns | 116ns | 0.457 | 0 | 0 | 34.02 KB |
| master | RunWafTwice(args=NestedMap (100)) |
netcoreapp3.1 | 143μs | 774ns | 4.38μs | 0.426 | 0 | 0 | 34.58 KB |
| master | RunWafTwice(args=NestedMap (100)) |
net472 | 196μs | 175ns | 678ns | 5.49 | 0.392 | 0 | 34.96 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [23]) |
net6.0 | 154μs | 67.4ns | 252ns | 0.458 | 0 | 0 | 36.18 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [23]) |
netcoreapp3.1 | 196μs | 1μs | 4.59μs | 0.464 | 0 | 0 | 36.71 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [23]) |
net472 | 246μs | 93.7ns | 363ns | 5.91 | 0.492 | 0 | 37.26 KB |
| master | RunWaf(args=NestedMap (20)) |
net6.0 | 103μs | 554ns | 3.09μs | 0.452 | 0 | 0 | 32.78 KB |
| master | RunWaf(args=NestedMap (20)) |
netcoreapp3.1 | 138μs | 718ns | 3.59μs | 0.453 | 0 | 0 | 32.89 KB |
| master | RunWaf(args=NestedMap (20)) |
net472 | 190μs | 95.7ns | 371ns | 5.23 | 0.381 | 0 | 33.23 KB |
| master | RunWafTwice(args=NestedMap (20)) |
net6.0 | 104μs | 88.6ns | 343ns | 0.473 | 0 | 0 | 33.45 KB |
| master | RunWafTwice(args=NestedMap (20)) |
netcoreapp3.1 | 137μs | 519ns | 2.01μs | 0.409 | 0 | 0 | 33.55 KB |
| master | RunWafTwice(args=NestedMap (20)) |
net472 | 200μs | 95.7ns | 345ns | 5.32 | 0.394 | 0 | 33.92 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 156μs | 130ns | 502ns | 0.471 | 0 | 0 | 35.61 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 197μs | 995ns | 4.56μs | 0.469 | 0 | 0 | 35.68 KB |
| master | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 246μs | 500ns | 1.87μs | 5.68 | 0.484 | 0 | 36.22 KB |
| #4599 | RunWaf(args=NestedMap (10)) |
net6.0 | 55.5μs | 315ns | 2.16μs | 0.23 | 0 | 0 | 16.66 KB |
| #4599 | RunWaf(args=NestedMap (10)) |
netcoreapp3.1 | 69.6μs | 374ns | 1.98μs | 0.208 | 0 | 0 | 16.65 KB |
| #4599 | RunWaf(args=NestedMap (10)) |
net472 | 99.7μs | 406ns | 1.57μs | 2.66 | 0.0983 | 0 | 16.73 KB |
| #4599 | RunWafTwice(args=NestedMap (10)) |
net6.0 | 55μs | 26.6ns | 116ns | 0.238 | 0 | 0 | 17.33 KB |
| #4599 | RunWafTwice(args=NestedMap (10)) |
netcoreapp3.1 | 73.4μs | 392ns | 2.21μs | 0.228 | 0 | 0 | 17.31 KB |
| #4599 | RunWafTwice(args=NestedMap (10)) |
net472 | 105μs | 75.1ns | 271ns | 2.74 | 0.105 | 0 | 17.42 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 102μs | 31.7ns | 119ns | 0.254 | 0 | 0 | 19.49 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 125μs | 120ns | 465ns | 0.238 | 0 | 0 | 19.44 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 155μs | 336ns | 1.26μs | 3.07 | 0.15 | 0 | 19.72 KB |
| #4599 | RunWaf(args=NestedMap (100)) |
net6.0 | 101μs | 34.8ns | 135ns | 0.472 | 0 | 0 | 33.35 KB |
| #4599 | RunWaf(args=NestedMap (100)) |
netcoreapp3.1 | 134μs | 488ns | 1.83μs | 0.469 | 0 | 0 | 33.92 KB |
| #4599 | RunWaf(args=NestedMap (100)) |
net472 | 192μs | 816ns | 3.16μs | 5.37 | 0.377 | 0 | 34.26 KB |
| #4599 | RunWafTwice(args=NestedMap (100)) |
net6.0 | 104μs | 20.9ns | 81ns | 0.466 | 0 | 0 | 34.02 KB |
| #4599 | RunWafTwice(args=NestedMap (100)) |
netcoreapp3.1 | 139μs | 739ns | 3.62μs | 0.407 | 0 | 0 | 34.58 KB |
| #4599 | RunWafTwice(args=NestedMap (100)) |
net472 | 206μs | 112ns | 420ns | 5.54 | 0.396 | 0 | 34.96 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [23]) |
net6.0 | 153μs | 80.6ns | 290ns | 0.46 | 0 | 0 | 36.18 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [23]) |
netcoreapp3.1 | 192μs | 876ns | 3.5μs | 0.466 | 0 | 0 | 36.71 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [23]) |
net472 | 249μs | 73.5ns | 265ns | 5.84 | 0.373 | 0 | 37.26 KB |
| #4599 | RunWaf(args=NestedMap (20)) |
net6.0 | 106μs | 17.2ns | 64.5ns | 0.454 | 0 | 0 | 32.78 KB |
| #4599 | RunWaf(args=NestedMap (20)) |
netcoreapp3.1 | 140μs | 756ns | 4μs | 0.453 | 0 | 0 | 32.89 KB |
| #4599 | RunWaf(args=NestedMap (20)) |
net472 | 187μs | 82.2ns | 318ns | 5.22 | 0.373 | 0 | 33.23 KB |
| #4599 | RunWafTwice(args=NestedMap (20)) |
net6.0 | 104μs | 52.3ns | 202ns | 0.427 | 0 | 0 | 33.45 KB |
| #4599 | RunWafTwice(args=NestedMap (20)) |
netcoreapp3.1 | 136μs | 272ns | 1.05μs | 0.408 | 0 | 0 | 33.55 KB |
| #4599 | RunWafTwice(args=NestedMap (20)) |
net472 | 204μs | 67ns | 260ns | 5.37 | 0.398 | 0 | 33.92 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net6.0 | 156μs | 595ns | 2.31μs | 0.461 | 0 | 0 | 35.61 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [22]) |
netcoreapp3.1 | 184μs | 100ns | 348ns | 0.389 | 0 | 0 | 35.68 KB |
| #4599 | RunWafWithAttack(args=Neste(...)tack) [22]) |
net472 | 248μs | 137ns | 513ns | 5.68 | 0.494 | 0 | 36.22 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 | 171μs | 175ns | 677ns | 0.171 | 0 | 0 | 18.26 KB |
| master | SendRequest |
netcoreapp3.1 | 192μs | 397ns | 1.54μs | 0.191 | 0 | 0 | 20.42 KB |
| master | SendRequest |
net472 | 0.000558ns | 0.000211ns | 0.000818ns | 0 | 0 | 0 | 0 b |
| #4599 | SendRequest |
net6.0 | 172μs | 108ns | 418ns | 0.172 | 0 | 0 | 18.26 KB |
| #4599 | SendRequest |
netcoreapp3.1 | 195μs | 382ns | 1.32μs | 0.193 | 0 | 0 | 20.42 KB |
| #4599 | SendRequest |
net472 | 0.000295ns | 0.000161ns | 0.000602ns | 0 | 0 | 0 | 0 b |
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | WriteAndFlushEnrichedTraces |
net6.0 | 556μs | 528ns | 2.05μs | 0.561 | 0 | 0 | 41.83 KB |
| master | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 649μs | 880ns | 3.41μs | 0.322 | 0 | 0 | 41.75 KB |
| master | WriteAndFlushEnrichedTraces |
net472 | 866μs | 3.97μs | 15.4μs | 8.25 | 2.6 | 0.434 | 53.23 KB |
| #4599 | WriteAndFlushEnrichedTraces |
net6.0 | 555μs | 1.94μs | 7.51μs | 0.536 | 0 | 0 | 41.62 KB |
| #4599 | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 645μs | 661ns | 2.38μs | 0.322 | 0 | 0 | 41.73 KB |
| #4599 | WriteAndFlushEnrichedTraces |
net472 | 808μs | 3.01μs | 11.7μs | 8.33 | 2.5 | 0.417 | 53.24 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.09μs | 0.513ns | 1.99ns | 0.0109 | 0 | 0 | 776 B |
| master | ExecuteNonQuery |
netcoreapp3.1 | 1.38μs | 0.504ns | 1.95ns | 0.0104 | 0 | 0 | 776 B |
| master | ExecuteNonQuery |
net472 | 1.86μs | 0.976ns | 3.78ns | 0.116 | 0 | 0 | 738 B |
| #4599 | ExecuteNonQuery |
net6.0 | 1.11μs | 1.11ns | 4.29ns | 0.0108 | 0 | 0 | 776 B |
| #4599 | ExecuteNonQuery |
netcoreapp3.1 | 1.4μs | 0.609ns | 2.36ns | 0.0105 | 0 | 0 | 776 B |
| #4599 | ExecuteNonQuery |
net472 | 1.71μs | 2.15ns | 8.31ns | 0.117 | 0 | 0 | 738 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.17μs | 0.869ns | 3.36ns | 0.0135 | 0 | 0 | 944 B |
| master | CallElasticsearch |
netcoreapp3.1 | 1.52μs | 0.744ns | 2.88ns | 0.013 | 0 | 0 | 944 B |
| master | CallElasticsearch |
net472 | 2.36μs | 0.577ns | 2.16ns | 0.152 | 0 | 0 | 963 B |
| master | CallElasticsearchAsync |
net6.0 | 1.25μs | 0.7ns | 2.71ns | 0.0125 | 0 | 0 | 920 B |
| master | CallElasticsearchAsync |
netcoreapp3.1 | 1.59μs | 2.13ns | 8.26ns | 0.0128 | 0 | 0 | 992 B |
| master | CallElasticsearchAsync |
net472 | 2.71μs | 0.642ns | 2.49ns | 0.161 | 0 | 0 | 1.02 KB |
| #4599 | CallElasticsearch |
net6.0 | 1.27μs | 1.69ns | 6.33ns | 0.0135 | 0 | 0 | 944 B |
| #4599 | CallElasticsearch |
netcoreapp3.1 | 1.6μs | 1.15ns | 4.31ns | 0.0128 | 0 | 0 | 944 B |
| #4599 | CallElasticsearch |
net472 | 2.38μs | 1ns | 3.89ns | 0.153 | 0 | 0 | 963 B |
| #4599 | CallElasticsearchAsync |
net6.0 | 1.27μs | 0.932ns | 3.61ns | 0.0133 | 0 | 0 | 920 B |
| #4599 | CallElasticsearchAsync |
netcoreapp3.1 | 1.61μs | 0.556ns | 2.08ns | 0.0129 | 0 | 0 | 992 B |
| #4599 | CallElasticsearchAsync |
net472 | 2.7μs | 0.785ns | 2.94ns | 0.161 | 0 | 0 | 1.02 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.31μs | 1.21ns | 4.52ns | 0.0126 | 0 | 0 | 920 B |
| master | ExecuteAsync |
netcoreapp3.1 | 1.66μs | 1.83ns | 7.08ns | 0.0118 | 0 | 0 | 920 B |
| master | ExecuteAsync |
net472 | 1.9μs | 0.894ns | 3.34ns | 0.14 | 0 | 0 | 883 B |
| #4599 | ExecuteAsync |
net6.0 | 1.41μs | 1.13ns | 4.21ns | 0.0127 | 0 | 0 | 920 B |
| #4599 | ExecuteAsync |
netcoreapp3.1 | 1.62μs | 2.28ns | 8.54ns | 0.012 | 0 | 0 | 920 B |
| #4599 | ExecuteAsync |
net472 | 1.91μs | 2.08ns | 8.05ns | 0.14 | 0 | 0 | 883 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 | 4.07μs | 1.41ns | 5.26ns | 0.0285 | 0 | 0 | 2.1 KB |
| master | SendAsync |
netcoreapp3.1 | 4.89μs | 1.59ns | 5.96ns | 0.0343 | 0 | 0 | 2.64 KB |
| master | SendAsync |
net472 | 7.79μs | 2.34ns | 9.07ns | 0.525 | 0 | 0 | 3.31 KB |
| #4599 | SendAsync |
net6.0 | 4.07μs | 2.06ns | 7.99ns | 0.029 | 0 | 0 | 2.1 KB |
| #4599 | SendAsync |
netcoreapp3.1 | 5.04μs | 5.11ns | 19.1ns | 0.0351 | 0 | 0 | 2.64 KB |
| #4599 | SendAsync |
net472 | 7.68μs | 3.8ns | 14.7ns | 0.523 | 0 | 0 | 3.31 KB |
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ Fewer allocations 🎉
Fewer allocations 🎉 in #4599
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0
213.99 KB
202.61 KB
-11.38 KB
-5.32%
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 | 213.99 KB | 202.61 KB | -11.38 KB | -5.32% |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | StringConcatBenchmark |
net6.0 | 62.5μs | 993ns | 9.63μs | 0 | 0 | 0 | 43.44 KB |
| master | StringConcatBenchmark |
netcoreapp3.1 | 53.3μs | 226ns | 815ns | 0 | 0 | 0 | 42.64 KB |
| master | StringConcatBenchmark |
net472 | 37.8μs | 192ns | 813ns | 0 | 0 | 0 | 61.93 KB |
| master | StringConcatAspectBenchmark |
net6.0 | 268μs | 1.3μs | 5.68μs | 0 | 0 | 0 | 213.99 KB |
| master | StringConcatAspectBenchmark |
netcoreapp3.1 | 291μs | 1.66μs | 12.7μs | 0 | 0 | 0 | 203.22 KB |
| master | StringConcatAspectBenchmark |
net472 | 226μs | 1.68μs | 15.5μs | 0 | 0 | 0 | 221.18 KB |
| #4599 | StringConcatBenchmark |
net6.0 | 56μs | 990ns | 9.49μs | 0 | 0 | 0 | 43.44 KB |
| #4599 | StringConcatBenchmark |
netcoreapp3.1 | 54.2μs | 246ns | 1.01μs | 0 | 0 | 0 | 42.64 KB |
| #4599 | StringConcatBenchmark |
net472 | 38.4μs | 90.6ns | 314ns | 0 | 0 | 0 | 62.1 KB |
| #4599 | StringConcatAspectBenchmark |
net6.0 | 266μs | 1.24μs | 7.23μs | 0 | 0 | 0 | 202.61 KB |
| #4599 | StringConcatAspectBenchmark |
netcoreapp3.1 | 263μs | 3.23μs | 31.1μs | 0 | 0 | 0 | 203.59 KB |
| #4599 | StringConcatAspectBenchmark |
net472 | 225μs | 1.04μs | 3.91μs | 0 | 0 | 0 | 221.18 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 | 1.43μs | 0.508ns | 1.9ns | 0.0222 | 0 | 0 | 1.58 KB |
| master | EnrichedLog |
netcoreapp3.1 | 2.28μs | 0.915ns | 3.55ns | 0.0214 | 0 | 0 | 1.58 KB |
| master | EnrichedLog |
net472 | 2.67μs | 2.03ns | 7.88ns | 0.238 | 0 | 0 | 1.51 KB |
| #4599 | EnrichedLog |
net6.0 | 1.43μs | 1.3ns | 5.02ns | 0.0222 | 0 | 0 | 1.58 KB |
| #4599 | EnrichedLog |
netcoreapp3.1 | 2.3μs | 1.36ns | 5.11ns | 0.0218 | 0 | 0 | 1.58 KB |
| #4599 | EnrichedLog |
net472 | 2.79μs | 2.41ns | 9.32ns | 0.238 | 0 | 0 | 1.51 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 | 112μs | 79.1ns | 306ns | 0.0563 | 0 | 0 | 4.22 KB |
| master | EnrichedLog |
netcoreapp3.1 | 117μs | 96ns | 372ns | 0.0588 | 0 | 0 | 4.22 KB |
| master | EnrichedLog |
net472 | 147μs | 70.3ns | 263ns | 0.66 | 0.22 | 0 | 4.4 KB |
| #4599 | EnrichedLog |
net6.0 | 114μs | 149ns | 576ns | 0.0568 | 0 | 0 | 4.22 KB |
| #4599 | EnrichedLog |
netcoreapp3.1 | 118μs | 70.5ns | 264ns | 0 | 0 | 0 | 4.22 KB |
| #4599 | EnrichedLog |
net472 | 150μs | 224ns | 869ns | 0.671 | 0.224 | 0 | 4.4 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 | 3.02μs | 0.741ns | 2.87ns | 0.0302 | 0 | 0 | 2.14 KB |
| master | EnrichedLog |
netcoreapp3.1 | 4.2μs | 3.51ns | 13.6ns | 0.0292 | 0 | 0 | 2.14 KB |
| master | EnrichedLog |
net472 | 4.83μs | 2.62ns | 9.8ns | 0.31 | 0 | 0 | 1.95 KB |
| #4599 | EnrichedLog |
net6.0 | 3.01μs | 0.984ns | 3.68ns | 0.0299 | 0 | 0 | 2.14 KB |
| #4599 | EnrichedLog |
netcoreapp3.1 | 4.26μs | 1.69ns | 6.32ns | 0.0276 | 0 | 0 | 2.14 KB |
| #4599 | EnrichedLog |
net472 | 4.8μs | 1.94ns | 7.51ns | 0.309 | 0 | 0 | 1.95 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.3μs | 0.614ns | 2.38ns | 0.0155 | 0 | 0 | 1.11 KB |
| master | SendReceive |
netcoreapp3.1 | 1.69μs | 1.05ns | 4.08ns | 0.0153 | 0 | 0 | 1.11 KB |
| master | SendReceive |
net472 | 2.16μs | 1.5ns | 5.82ns | 0.178 | 0 | 0 | 1.12 KB |
| #4599 | SendReceive |
net6.0 | 1.41μs | 0.605ns | 2.34ns | 0.0155 | 0 | 0 | 1.11 KB |
| #4599 | SendReceive |
netcoreapp3.1 | 1.77μs | 1.09ns | 4.2ns | 0.015 | 0 | 0 | 1.11 KB |
| #4599 | SendReceive |
net472 | 2.09μs | 3.22ns | 12.5ns | 0.178 | 0 | 0 | 1.12 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 | 2.77μs | 1.26ns | 4.9ns | 0.0208 | 0 | 0 | 1.54 KB |
| master | EnrichedLog |
netcoreapp3.1 | 3.92μs | 1.59ns | 5.97ns | 0.0218 | 0 | 0 | 1.58 KB |
| master | EnrichedLog |
net472 | 4.33μs | 1.62ns | 6.26ns | 0.312 | 0 | 0 | 1.97 KB |
| #4599 | EnrichedLog |
net6.0 | 2.76μs | 0.664ns | 2.48ns | 0.0206 | 0 | 0 | 1.54 KB |
| #4599 | EnrichedLog |
netcoreapp3.1 | 3.98μs | 1.03ns | 3.56ns | 0.0199 | 0 | 0 | 1.58 KB |
| #4599 | EnrichedLog |
net472 | 4.46μs | 1.8ns | 6.99ns | 0.313 | 0 | 0 | 1.97 KB |
Benchmarks.Trace.SpanBenchmark - Slower ⚠️ Same allocations ✔️
Slower ⚠️ in #4599
Benchmark
diff/base
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net472
1.128
886.46
999.78
Faster 🎉 in #4599
Benchmark
base/diff
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net6.0
1.182
719.72
608.85
| Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
|---|---|---|---|---|
| Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net472 | 1.128 | 886.46 | 999.78 |
| Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
|---|---|---|---|---|
| Benchmarks.Trace.SpanBenchmark.StartFinishScope‑net6.0 | 1.182 | 719.72 | 608.85 |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | StartFinishSpan |
net6.0 | 519ns | 0.0869ns | 0.337ns | 0.00756 | 0 | 0 | 544 B |
| master | StartFinishSpan |
netcoreapp3.1 | 681ns | 0.398ns | 1.38ns | 0.00748 | 0 | 0 | 544 B |
| master | StartFinishSpan |
net472 | 759ns | 0.45ns | 1.74ns | 0.0865 | 0 | 0 | 546 B |
| master | StartFinishScope |
net6.0 | 712ns | 2.92ns | 11.3ns | 0.00942 | 0 | 0 | 664 B |
| master | StartFinishScope |
netcoreapp3.1 | 872ns | 1.6ns | 6.18ns | 0.00887 | 0 | 0 | 664 B |
| master | StartFinishScope |
net472 | 888ns | 0.9ns | 3.49ns | 0.0994 | 0 | 0 | 626 B |
| #4599 | StartFinishSpan |
net6.0 | 563ns | 0.142ns | 0.552ns | 0.00762 | 0 | 0 | 544 B |
| #4599 | StartFinishSpan |
netcoreapp3.1 | 690ns | 0.193ns | 0.723ns | 0.0074 | 0 | 0 | 544 B |
| #4599 | StartFinishSpan |
net472 | 728ns | 0.66ns | 2.56ns | 0.0866 | 0 | 0 | 546 B |
| #4599 | StartFinishScope |
net6.0 | 609ns | 0.477ns | 1.85ns | 0.00919 | 0 | 0 | 664 B |
| #4599 | StartFinishScope |
netcoreapp3.1 | 876ns | 0.542ns | 1.88ns | 0.00882 | 0 | 0 | 664 B |
| #4599 | StartFinishScope |
net472 | 1E+03ns | 0.666ns | 2.49ns | 0.0992 | 0 | 0 | 626 B |
Benchmarks.Trace.TraceAnnotationsBenchmark - Slower ⚠️ Same allocations ✔️
Slower ⚠️ in #4599
Benchmark
diff/base
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net472
1.144
1,050.57
1,201.50
| Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
|---|---|---|---|---|
| Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net472 | 1.144 | 1,050.57 | 1,201.50 |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | RunOnMethodBegin |
net6.0 | 683ns | 0.27ns | 1.05ns | 0.00912 | 0 | 0 | 664 B |
| master | RunOnMethodBegin |
netcoreapp3.1 | 943ns | 0.819ns | 2.95ns | 0.00861 | 0 | 0 | 664 B |
| master | RunOnMethodBegin |
net472 | 1.05μs | 0.482ns | 1.8ns | 0.0989 | 0 | 0 | 626 B |
| #4599 | RunOnMethodBegin |
net6.0 | 622ns | 0.163ns | 0.632ns | 0.00931 | 0 | 0 | 664 B |
| #4599 | RunOnMethodBegin |
netcoreapp3.1 | 937ns | 0.38ns | 1.47ns | 0.00879 | 0 | 0 | 664 B |
| #4599 | RunOnMethodBegin |
net472 | 1.2μs | 0.922ns | 3.57ns | 0.0989 | 0 | 0 | 626 B |
Throughput/Crank Report:zap:Throughput results for AspNetCoreSimpleController comparing the following branches/commits: Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red. Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards! gantt
title Throughput Linux x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (4599) (11.444M) : 0, 11444457
master (11.681M) : 0, 11680563
benchmarks/2.9.0 (11.635M) : 0, 11634705
section Automatic
This PR (4599) (7.849M) : 0, 7848811
master (8.108M) : 0, 8107856
benchmarks/2.9.0 (8.419M) : 0, 8419344
section Trace stats
This PR (4599) (8.166M) : 0, 8166083
master (8.294M) : 0, 8293656
section Manual
This PR (4599) (9.898M) : 0, 9897643
master (10.057M) : 0, 10057374
section Manual + Automatic
This PR (4599) (7.430M) : 0, 7429710
master (7.604M) : 0, 7604182
section Version Conflict
This PR (4599) (6.769M) : 0, 6769154
master (6.847M) : 0, 6847217
gantt
title Throughput Linux arm64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (4599) (9.514M) : 0, 9514083
benchmarks/2.9.0 (9.579M) : 0, 9579404
section Automatic
This PR (4599) (6.565M) : 0, 6565081
section Trace stats
This PR (4599) (6.948M) : 0, 6947748
section Manual
This PR (4599) (8.296M) : 0, 8295598
section Manual + Automatic
This PR (4599) (6.198M) : 0, 6197939
section Version Conflict
This PR (4599) (5.701M) : 0, 5700822
gantt
title Throughput Windows x64 (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (4599) (9.803M) : 0, 9802966
master (10.201M) : 0, 10200526
benchmarks/2.9.0 (9.697M) : 0, 9697336
section Automatic
This PR (4599) (6.608M) : crit ,0, 6607844
master (7.156M) : 0, 7155785
benchmarks/2.9.0 (6.977M) : 0, 6977056
section Trace stats
This PR (4599) (7.042M) : crit ,0, 7042199
master (7.475M) : 0, 7475360
section Manual
This PR (4599) (8.425M) : 0, 8425216
master (8.841M) : 0, 8841098
section Manual + Automatic
This PR (4599) (6.705M) : crit ,0, 6705320
master (7.150M) : 0, 7150306
section Version Conflict
This PR (4599) (5.820M) : crit ,0, 5820202
master (6.451M) : 0, 6450541
gantt
title Throughput Linux x64 (ASM) (Total requests)
dateFormat X
axisFormat %s
section Baseline
This PR (4599) (7.311M) : 0, 7310849
master (7.423M) : 0, 7423133
benchmarks/2.9.0 (7.871M) : 0, 7870899
section No attack
This PR (4599) (1.741M) : 0, 1741323
master (1.750M) : 0, 1749783
benchmarks/2.9.0 (3.240M) : 0, 3240474
section Attack
This PR (4599) (1.399M) : 0, 1399075
master (1.390M) : 0, 1390052
benchmarks/2.9.0 (2.538M) : 0, 2538134
section Blocking
This PR (4599) (3.020M) : 0, 3019936
master (3.044M) : 0, 3043672
section IAST default
This PR (4599) (6.388M) : 0, 6388095
master (6.441M) : 0, 6441379
section IAST full
This PR (4599) (5.603M) : 0, 5602840
master (5.550M) : 0, 5549971
section Base vuln
This PR (4599) (0.940M) : 0, 940205
master (0.964M) : 0, 963677
section IAST vuln
This PR (4599) (0.882M) : 0, 881559
master (0.859M) : 0, 859363
|
DD_TRACE_HEADER_TAGSDD_TRACE_HEADER_TAGS
0a63f10 to
600e494
Compare
Datadog ReportBranch report: ❌ ❌ Failed Tests (1)
|
600e494 to
1cf338e
Compare
Datadog ReportBranch report: ✅ |
1cf338e to
1381499
Compare
Datadog ReportBranch report: ❌ ❌ Failed Tests (1)
|
Datadog ReportBranch report: ✅ 0 Failed, 316622 Passed, 2321 Skipped, 41m 6.12s Wall Time |
fd0eb37 to
4772455
Compare
andrewlock
left a comment
There was a problem hiding this comment.
I think we should potentially change the behaviour for the case flag=false, as noone ever disabled it in v2, but there may be some people that don't want the period normalization to change
802300c to
9eb185e
Compare
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
…4599) * use parameter to normalize periods and spaces * add unit tests that enable/disable normalization of periods and spaces * always replace periods in v3 * improve xml comments * simplify conditions * use FluidAssertions * rename parameter * fix tests * fix xml comment * re-order test cases * rewrite logic in TryConvertToNormalizedTagName() * remove unued `using` directive * refactor * clean up tests * add more tests * improve comments * use `continue` instead of `return` * remove property from [Immutable]TracerSettings * fix unit test * remove CreateFunc() and CreateGlobalFunc() * move string.TryConvertToNormalizedTagName() to SpanTagHelper.TryNormalizeTagName() * add and move tests * fixing things * fix compiler warning * remove unused `using` directives * fix tests * add nullable annotations * fix compiler error and comments
Summary of changes
When users specify a tag name in
DD_TRACE_HEADER_TAGS, we should not perform any normalization on the tag name.Reason for change
.NET Tracer is not currently following the RFC. @mtoffl01 found out with shared tests.
Implementation details
Stop calling
string.TryConvertToNormalizedTagName()if the user specifies a tag name explicitly.Setting the feature flag
DD_TRACE_HEADER_TAG_NORMALIZATION_FIX_ENABLED(defaulttrue) tofalserestores the previous behavior, where we normalize withstring.TryConvertToNormalizedTagName(). Note that this previous behavior normalized periods but not spaces, which was a bug that we are keeping to avoid breaking changes.Test coverage
Added new unit tests and updated existing ones.
Other details
Fixes AIT-8308
This will be released with v3 of the tracing library, not the next minor release (2.x)