Skip to content

[AAP] Add latest supported waf capabilities to RC#7332

Merged
dromanol merged 2 commits into
masterfrom
dani/asm/update_rc_capabilities
Aug 5, 2025
Merged

[AAP] Add latest supported waf capabilities to RC#7332
dromanol merged 2 commits into
masterfrom
dani/asm/update_rc_capabilities

Conversation

@dromanol

@dromanol dromanol commented Aug 4, 2025

Copy link
Copy Markdown
Contributor

Summary of changes

Added ASM_DD_MULTICONFIG and ASM_TRACE_TAGGING_RULES

Reason for change

From this RFC

Implementation details

Test coverage

Other details

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Aug 4, 2025

Copy link
Copy Markdown

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

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

@pr-commenter

pr-commenter Bot commented Aug 4, 2025

Copy link
Copy Markdown

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7332 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.680
  • 2 benchmarks are slower, with geometric mean 1.605
  • 7 benchmarks have fewer allocations
  • 4 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

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

Allocation changes below 0.5% are ignored.

Benchmark details

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

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.4μs 59ns 404ns 0 0 0 5.49 KB
master StartStopWithChild netcoreapp3.1 14.5μs 63.3ns 245ns 0 0 0 5.67 KB
master StartStopWithChild net472 22μs 112ns 549ns 1 0.335 0.112 6.05 KB
#7332 StartStopWithChild net6.0 10.9μs 56.1ns 263ns 0 0 0 5.5 KB
#7332 StartStopWithChild netcoreapp3.1 13.5μs 68.3ns 320ns 0 0 0 5.69 KB
#7332 StartStopWithChild net472 22.5μs 119ns 608ns 1.02 0.34 0.113 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 940μs 156ns 584ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.01ms 97.5ns 338ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.2ms 73.4ns 284ns 0 0 0 3.31 KB
#7332 WriteAndFlushEnrichedTraces net6.0 955μs 95.5ns 357ns 0 0 0 2.71 KB
#7332 WriteAndFlushEnrichedTraces netcoreapp3.1 1.04ms 58.6ns 227ns 0 0 0 2.7 KB
#7332 WriteAndFlushEnrichedTraces net472 1.25ms 67.8ns 244ns 0 0 0 3.31 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 341μs 1.04μs 4.03μs 0 0 0 198.41 KB
master AllCycleSimpleBody netcoreapp3.1 514μs 2.22μs 8.59μs 0 0 0 206.17 KB
master AllCycleSimpleBody net472 448μs 100ns 389ns 37.9 2.23 0 246.64 KB
master AllCycleMoreComplexBody net6.0 346μs 1.75μs 7.63μs 0 0 0 201.92 KB
master AllCycleMoreComplexBody netcoreapp3.1 522μs 837ns 3.02μs 0 0 0 209.58 KB
master AllCycleMoreComplexBody net472 458μs 124ns 465ns 37.9 2.23 0 250.15 KB
master ObjectExtractorSimpleBody net6.0 323ns 0.179ns 0.645ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 406ns 1.95ns 7.8ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 300ns 0.042ns 0.157ns 0.0438 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.35μs 27.2ns 105ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.79μs 36.5ns 141ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.73μs 2.65ns 9.93ns 0.573 0 0 3.8 KB
#7332 AllCycleSimpleBody net6.0 338μs 1.07μs 4.01μs 0 0 0 198.41 KB
#7332 AllCycleSimpleBody netcoreapp3.1 521μs 1.34μs 5.19μs 0 0 0 206.17 KB
#7332 AllCycleSimpleBody net472 450μs 118ns 442ns 37.9 2.23 0 246.64 KB
#7332 AllCycleMoreComplexBody net6.0 341μs 380ns 1.42μs 0 0 0 201.92 KB
#7332 AllCycleMoreComplexBody netcoreapp3.1 515μs 2.08μs 7.8μs 0 0 0 209.58 KB
#7332 AllCycleMoreComplexBody net472 456μs 114ns 440ns 37.9 2.23 0 250.15 KB
#7332 ObjectExtractorSimpleBody net6.0 325ns 1.56ns 6.63ns 0 0 0 280 B
#7332 ObjectExtractorSimpleBody netcoreapp3.1 405ns 2.2ns 12.8ns 0 0 0 272 B
#7332 ObjectExtractorSimpleBody net472 304ns 0.0226ns 0.0846ns 0.0443 0 0 281 B
#7332 ObjectExtractorMoreComplexBody net6.0 6.36μs 18.5ns 71.6ns 0 0 0 3.78 KB
#7332 ObjectExtractorMoreComplexBody netcoreapp3.1 7.85μs 38ns 157ns 0 0 0 3.69 KB
#7332 ObjectExtractorMoreComplexBody net472 6.76μs 1.06ns 4.09ns 0.575 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 77.1μs 252ns 976ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.6μs 332ns 1.29μs 0 0 0 32.4 KB
master EncodeArgs net472 111μs 45.9ns 178ns 4.98 0 0 32.51 KB
master EncodeLegacyArgs net6.0 144μs 12.9ns 44.7ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 197μs 151ns 583ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 261μs 42.9ns 166ns 0 0 0 2.16 KB
#7332 EncodeArgs net6.0 78.8μs 58.5ns 219ns 0 0 0 32.4 KB
#7332 EncodeArgs netcoreapp3.1 98.4μs 315ns 1.22μs 0 0 0 32.4 KB
#7332 EncodeArgs net472 110μs 40.3ns 156ns 4.94 0 0 32.51 KB
#7332 EncodeLegacyArgs net6.0 144μs 24.7ns 95.5ns 0 0 0 2.15 KB
#7332 EncodeLegacyArgs netcoreapp3.1 197μs 83.7ns 324ns 0 0 0 2.14 KB
#7332 EncodeLegacyArgs net472 262μs 91.3ns 342ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7332

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.060 415,818.44 856,433.62

Faster 🎉 in #7332

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.427 747,076.50 307,763.41

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 399μs 95.9ns 371ns 0 0 0 4.56 KB
master RunWafRealisticBenchmark netcoreapp3.1 416μs 96.9ns 336ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 435μs 53.6ns 208ns 0 0 0 4.68 KB
master RunWafRealisticBenchmarkWithAttack net6.0 285μs 125ns 469ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 720μs 9.61μs 96.1μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 314μs 26.4ns 102ns 0 0 0 2.29 KB
#7332 RunWafRealisticBenchmark net6.0 399μs 85.6ns 320ns 0 0 0 4.55 KB
#7332 RunWafRealisticBenchmark netcoreapp3.1 849μs 5.64μs 55μs 0 0 0 4.48 KB
#7332 RunWafRealisticBenchmark net472 433μs 69.7ns 251ns 0 0 0 4.66 KB
#7332 RunWafRealisticBenchmarkWithAttack net6.0 292μs 143ns 537ns 0 0 0 2.24 KB
#7332 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 307μs 411ns 1.48μs 0 0 0 2.22 KB
#7332 RunWafRealisticBenchmarkWithAttack net472 314μs 168ns 650ns 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 60.7μs 69.2ns 240ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 70.5μs 94.9ns 414ns 0 0 0 17.42 KB
master SendRequest net472 0.00635ns 0.00198ns 0.00765ns 0 0 0 0 b
#7332 SendRequest net6.0 61.8μs 113ns 438ns 0 0 0 14.52 KB
#7332 SendRequest netcoreapp3.1 72μs 146ns 564ns 0 0 0 17.42 KB
#7332 SendRequest net472 0.0145ns 0.00169ns 0.00653ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7332

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 0 b 73 B 73 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 0 b 1 B 1 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 0 b 47 B 47 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 3 B 4 B 1 B 33.33%

Fewer allocations 🎉 in #7332

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 7 B 4 B -3 B -42.86%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.93ms 5.65μs 21.1μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.12ms 8.83μs 31.8μs 0 0 0 640 KB
master OriginalCharSlice net472 2.65ms 94.8ns 342ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.43ms 224ns 838ns 0 0 0 7 B
master OptimizedCharSlice netcoreapp3.1 1.66ms 107ns 401ns 0 0 0 1 B
master OptimizedCharSlice net472 1.96ms 459ns 1.78μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 813μs 97.6ns 378ns 0 0 0 3 B
master OptimizedCharSliceWithPool netcoreapp3.1 814μs 42.1ns 163ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.18ms 78ns 302ns 0 0 0 0 b
#7332 OriginalCharSlice net6.0 1.91ms 343ns 1.28μs 0 0 0 640.01 KB
#7332 OriginalCharSlice netcoreapp3.1 2.17ms 6.28μs 21.8μs 0 0 0 640 KB
#7332 OriginalCharSlice net472 2.65ms 207ns 803ns 100 0 0 641.95 KB
#7332 OptimizedCharSlice net6.0 1.39ms 337ns 1.3μs 0 0 0 4 B
#7332 OptimizedCharSlice netcoreapp3.1 1.71ms 928ns 3.59μs 0 0 0 1 B
#7332 OptimizedCharSlice net472 1.96ms 120ns 450ns 0 0 0 73 B
#7332 OptimizedCharSliceWithPool net6.0 798μs 43.6ns 169ns 0 0 0 4 B
#7332 OptimizedCharSliceWithPool netcoreapp3.1 805μs 101ns 377ns 0 0 0 1 B
#7332 OptimizedCharSliceWithPool net472 1.13ms 40ns 155ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7332

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 1.163 1,005,146.15 864,488.75

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 690μs 704ns 2.73μs 0 0 0 41.87 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 669μs 3.55μs 18.5μs 0 0 0 41.97 KB
master WriteAndFlushEnrichedTraces net472 1.01ms 3.7μs 14.3μs 4.81 0 0 56.47 KB
#7332 WriteAndFlushEnrichedTraces net6.0 698μs 3.66μs 18.6μs 0 0 0 41.74 KB
#7332 WriteAndFlushEnrichedTraces netcoreapp3.1 733μs 4.01μs 22.3μs 0 0 0 41.87 KB
#7332 WriteAndFlushEnrichedTraces net472 864μs 1.2μs 4.33μs 8.33 0 0 56.25 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.99μs 10.4ns 51.1ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.54μs 1.46ns 5.67ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.71μs 3.29ns 12.3ns 0.15 0.0136 0 987 B
#7332 ExecuteNonQuery net6.0 1.87μs 1.9ns 7.37ns 0 0 0 1.02 KB
#7332 ExecuteNonQuery netcoreapp3.1 2.5μs 9.68ns 36.2ns 0 0 0 1.02 KB
#7332 ExecuteNonQuery net472 2.6μs 3.5ns 13.5ns 0.156 0.013 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.74μs 9.22ns 48.8ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.36μs 7.89ns 30.6ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.48μs 3.49ns 13.5ns 0.157 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.84μs 4.72ns 18.3ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.44μs 11.4ns 45.5ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.64μs 2.11ns 7.62ns 0.164 0 0 1.1 KB
#7332 CallElasticsearch net6.0 1.76μs 8.26ns 34.1ns 0 0 0 1.03 KB
#7332 CallElasticsearch netcoreapp3.1 2.31μs 9.88ns 38.3ns 0 0 0 1.03 KB
#7332 CallElasticsearch net472 3.57μs 4.25ns 16.5ns 0.16 0 0 1.04 KB
#7332 CallElasticsearchAsync net6.0 1.76μs 3.65ns 13.2ns 0 0 0 1.01 KB
#7332 CallElasticsearchAsync netcoreapp3.1 2.48μs 10.3ns 38.7ns 0 0 0 1.08 KB
#7332 CallElasticsearchAsync net472 3.68μs 5.64ns 21.8ns 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.83μs 8.51ns 33ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.34μs 5.29ns 20.5ns 0 0 0 952 B
master ExecuteAsync net472 2.68μs 7.83ns 30.3ns 0.133 0 0 915 B
#7332 ExecuteAsync net6.0 1.82μs 1.64ns 5.9ns 0 0 0 952 B
#7332 ExecuteAsync netcoreapp3.1 2.41μs 8.4ns 32.5ns 0 0 0 952 B
#7332 ExecuteAsync net472 2.7μs 2.17ns 8.4ns 0.135 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 6.77μs 6.76ns 25.3ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.39μs 6.28ns 23.5ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 14.1ns 54.4ns 0.491 0 0 3.18 KB
#7332 SendAsync net6.0 6.9μs 8.42ns 31.5ns 0 0 0 2.36 KB
#7332 SendAsync netcoreapp3.1 8.38μs 8.07ns 31.2ns 0 0 0 2.9 KB
#7332 SendAsync net472 12.3μs 15.8ns 61ns 0.483 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Slower ⚠️ Fewer allocations 🎉

Slower ⚠️ in #7332

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 1.251 408,050.00 510,600.00 bimodal

Fewer allocations 🎉 in #7332

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 275.15 KB 273.68 KB -1.47 KB -0.53%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 276.35 KB 273.9 KB -2.45 KB -0.89%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 290.08 KB 286.72 KB -3.36 KB -1.16%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 44.71 KB 43.55 KB -1.16 KB -2.59%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 45.5 KB 42.98 KB -2.53 KB -5.56%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 73.73 KB 65.54 KB -8.19 KB -11.11%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 46.6μs 278ns 2.7μs 0 0 0 44.71 KB
master StringConcatBenchmark netcoreapp3.1 51.1μs 470ns 4.53μs 0 0 0 45.5 KB
master StringConcatBenchmark net472 57μs 211ns 760ns 0 0 0 73.73 KB
master StringConcatAspectBenchmark net6.0 407μs 5.07μs 49.4μs 0 0 0 276.35 KB
master StringConcatAspectBenchmark netcoreapp3.1 516μs 2.42μs 9.96μs 0 0 0 275.15 KB
master StringConcatAspectBenchmark net472 416μs 2.16μs 10.4μs 0 0 0 290.08 KB
#7332 StringConcatBenchmark net6.0 49.3μs 260ns 1.67μs 0 0 0 43.55 KB
#7332 StringConcatBenchmark netcoreapp3.1 54.3μs 743ns 7.28μs 0 0 0 42.98 KB
#7332 StringConcatBenchmark net472 57.4μs 161ns 557ns 0 0 0 65.54 KB
#7332 StringConcatAspectBenchmark net6.0 515μs 2.53μs 11.6μs 0 0 0 273.9 KB
#7332 StringConcatAspectBenchmark netcoreapp3.1 514μs 810ns 2.92μs 0 0 0 273.68 KB
#7332 StringConcatAspectBenchmark net472 407μs 1.83μs 6.83μs 0 0 0 286.72 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.59μs 2.05ns 7.65ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.46μs 16.4ns 65.4ns 0 0 0 1.7 KB
master EnrichedLog net472 3.84μs 3.71ns 14.4ns 0.249 0 0 1.64 KB
#7332 EnrichedLog net6.0 2.59μs 1.6ns 6.2ns 0 0 0 1.7 KB
#7332 EnrichedLog netcoreapp3.1 3.43μs 17.3ns 77.3ns 0 0 0 1.7 KB
#7332 EnrichedLog net472 4.04μs 3.62ns 14ns 0.243 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 122μs 121ns 419ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 128μs 279ns 1.01μs 0 0 0 4.31 KB
master EnrichedLog net472 167μs 168ns 650ns 0 0 0 4.52 KB
#7332 EnrichedLog net6.0 122μs 86.2ns 334ns 0 0 0 4.31 KB
#7332 EnrichedLog netcoreapp3.1 129μs 99.1ns 357ns 0 0 0 4.31 KB
#7332 EnrichedLog net472 168μs 33.1ns 128ns 0 0 0 4.52 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 4.84μs 4.14ns 16ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.67μs 17.1ns 66.2ns 0 0 0 2.26 KB
master EnrichedLog net472 7.56μs 3.19ns 11.5ns 0.303 0 0 2.08 KB
#7332 EnrichedLog net6.0 4.87μs 16.7ns 64.6ns 0 0 0 2.26 KB
#7332 EnrichedLog netcoreapp3.1 6.55μs 14.3ns 55.3ns 0 0 0 2.26 KB
#7332 EnrichedLog net472 7.49μs 12.3ns 47.7ns 0.299 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 2μs 2.48ns 9.61ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.66μs 2.62ns 9.8ns 0 0 0 1.2 KB
master SendReceive net472 3.12μs 2.24ns 8.67ns 0.185 0 0 1.2 KB
#7332 SendReceive net6.0 1.99μs 10.4ns 52.9ns 0 0 0 1.2 KB
#7332 SendReceive netcoreapp3.1 2.62μs 12ns 43.1ns 0 0 0 1.2 KB
#7332 SendReceive net472 3.24μs 2.36ns 9.15ns 0.179 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.18μs 2.4ns 8.31ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.44μs 14.5ns 52.2ns 0 0 0 1.63 KB
master EnrichedLog net472 6.38μs 7.15ns 27.7ns 0.317 0 0 2.03 KB
#7332 EnrichedLog net6.0 4.15μs 7ns 27.1ns 0 0 0 1.58 KB
#7332 EnrichedLog netcoreapp3.1 5.44μs 8.3ns 32.2ns 0 0 0 1.63 KB
#7332 EnrichedLog net472 6.31μs 5.7ns 22.1ns 0.317 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 751ns 3.73ns 15.4ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 957ns 4.58ns 17.7ns 0 0 0 576 B
master StartFinishSpan net472 921ns 0.335ns 1.25ns 0.0874 0 0 578 B
master StartFinishScope net6.0 912ns 4.46ns 19.5ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.13μs 5.9ns 27.7ns 0 0 0 696 B
master StartFinishScope net472 1.13μs 0.87ns 3.37ns 0.101 0 0 658 B
#7332 StartFinishSpan net6.0 745ns 3.63ns 15ns 0 0 0 576 B
#7332 StartFinishSpan netcoreapp3.1 964ns 4.98ns 23.9ns 0 0 0 576 B
#7332 StartFinishSpan net472 960ns 0.16ns 0.598ns 0.0873 0 0 578 B
#7332 StartFinishScope net6.0 899ns 0.169ns 0.61ns 0 0 0 696 B
#7332 StartFinishScope netcoreapp3.1 1.13μs 4.96ns 19.2ns 0 0 0 696 B
#7332 StartFinishScope net472 1.12μs 1.66ns 6.43ns 0.1 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.04μs 0.861ns 3.34ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.38μs 5.65ns 21.9ns 0 0 0 696 B
master RunOnMethodBegin net472 1.4μs 0.721ns 2.79ns 0.0981 0 0 658 B
#7332 RunOnMethodBegin net6.0 1.05μs 5.24ns 24.6ns 0 0 0 696 B
#7332 RunOnMethodBegin netcoreapp3.1 1.38μs 5.43ns 21ns 0 0 0 696 B
#7332 RunOnMethodBegin net472 1.4μs 1.29ns 4.98ns 0.0981 0 0 658 B

@dd-trace-dotnet-ci-bot

dd-trace-dotnet-ci-bot Bot commented Aug 4, 2025

Copy link
Copy Markdown

Execution-Time Benchmarks Report ⏱️

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

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

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

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

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

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

    section Baseline
    This PR (7332) - mean (68ms)  : 65, 71
     .   : milestone, 68,
    master - mean (68ms)  : 66, 71
     .   : milestone, 68,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (1,047ms)  : 1024, 1070
     .   : milestone, 1047,
    master - mean (1,047ms)  : 1024, 1070
     .   : milestone, 1047,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7332) - mean (107ms)  : 106, 108
     .   : milestone, 107,
    master - mean (107ms)  : 106, 109
     .   : milestone, 107,

    section Baseline
    This PR (7332) - mean (106ms)  : 103, 109
     .   : milestone, 106,
    master - mean (106ms)  : 103, 109
     .   : milestone, 106,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (729ms)  : 714, 744
     .   : milestone, 729,
    master - mean (729ms)  : 709, 750
     .   : milestone, 729,

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

    section Baseline
    This PR (7332) - mean (94ms)  : 92, 96
     .   : milestone, 94,
    master - mean (93ms)  : 91, 96
     .   : milestone, 93,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (680ms)  : 664, 697
     .   : milestone, 680,
    master - mean (692ms)  : 676, 708
     .   : milestone, 692,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7332) - mean (94ms)  : 93, 95
     .   : milestone, 94,
    master - mean (94ms)  : 92, 95
     .   : milestone, 94,

    section Baseline
    This PR (7332) - mean (93ms)  : 90, 95
     .   : milestone, 93,
    master - mean (93ms)  : 91, 95
     .   : milestone, 93,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (621ms)  : 609, 634
     .   : milestone, 621,
    master - mean (627ms)  : 618, 636
     .   : milestone, 627,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7332) - mean (194ms)  : 188, 201
     .   : milestone, 194,
    master - mean (193ms)  : 187, 200
     .   : milestone, 193,

    section Baseline
    This PR (7332) - mean (190ms)  : 180, 200
     .   : milestone, 190,
    master - mean (189ms)  : 179, 200
     .   : milestone, 189,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (1,146ms)  : 1115, 1177
     .   : milestone, 1146,
    master - mean (1,152ms)  : 1118, 1186
     .   : milestone, 1152,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7332) - mean (276ms)  : 262, 291
     .   : milestone, 276,
    master - mean (273ms)  : 264, 282
     .   : milestone, 273,

    section Baseline
    This PR (7332) - mean (275ms)  : 266, 284
     .   : milestone, 275,
    master - mean (273ms)  : 264, 283
     .   : milestone, 273,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (919ms)  : 892, 945
     .   : milestone, 919,
    master - mean (919ms)  : 892, 946
     .   : milestone, 919,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7332) - mean (269ms)  : 259, 280
     .   : milestone, 269,
    master - mean (268ms)  : 257, 279
     .   : milestone, 268,

    section Baseline
    This PR (7332) - mean (269ms)  : 261, 277
     .   : milestone, 269,
    master - mean (265ms)  : 257, 274
     .   : milestone, 265,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (905ms)  : 878, 931
     .   : milestone, 905,
    master - mean (909ms)  : 872, 947
     .   : milestone, 909,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7332) - mean (268ms)  : 258, 277
     .   : milestone, 268,
    master - mean (264ms)  : 256, 272
     .   : milestone, 264,

    section Baseline
    This PR (7332) - mean (268ms)  : 257, 279
     .   : milestone, 268,
    master - mean (265ms)  : 255, 275
     .   : milestone, 265,

    section CallTarget+Inlining+NGEN
    This PR (7332) - mean (816ms)  : 793, 840
     .   : milestone, 816,
    master - mean (814ms)  : 790, 837
     .   : milestone, 814,

Loading

@dromanol
dromanol marked this pull request as ready for review August 5, 2025 13:00
@dromanol
dromanol requested review from a team as code owners August 5, 2025 13:00

@e-n-0 e-n-0 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks 😄

@andrewlock andrewlock left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🙈

@dromanol
dromanol merged commit b8cd9b4 into master Aug 5, 2025
151 checks passed
@dromanol
dromanol deleted the dani/asm/update_rc_capabilities branch August 5, 2025 13:10
@github-actions github-actions Bot added this to the vNext-v3 milestone Aug 5, 2025
@e-n-0 e-n-0 mentioned this pull request May 8, 2026
e-n-0 added a commit that referenced this pull request May 12, 2026
## Summary of changes

Add support for AAP trace-tagging rules from WAF and ASM_DD config.

## Reason for change


[RFC-1034](https://docs.google.com/document/d/1bqDtGgMJgsTW6I16iEcRn1lb9RRQjFRDGim8zRrbs0s/edit?tab=t.0)
lets AppSec rules attach trace attributes and request trace retention
without creating an AppSec event. The tracer needs to preserve those WAF
outputs and report them on the span with the right tag/metric types and
sampling priority.

Follow up of #7332 and #7331 (incorrectly reporting the capabilities as
they missed the implementation).

## Implementation details

- Parse WAF `keep` and `attributes` results, splitting schema
attributes, fingerprint attributes, and trace-tagging span attributes.
- Report trace-tagging attributes as tags or metrics based on their
native type. Numeric-looking strings stay strings.
- Preserve `JValue` scalar types when encoding WAF inputs.
- Add `rules_compat` support for ASM_DD configs and advertise the ASM_DD
multiconfig / trace-tagging capabilities.
- Keep API Security schema traces sampled even when the WAF returns
`keep:false`, while `keep:false` for plain trace-tagging rules does not
force `USER_KEEP`.

## Test coverage

- Added unit tests for WAF result parsing, typed attribute reporting,
`keep` / `HasKeep`, schema sampling, `JValue` encoding, RCM
capabilities, and `rules_compat`.
- Added an ASP.NET Core 5 integration snapshot for the four
trace-tagging variants: keep/no keep, event/no event, tags/metrics, and
sampling priority.
- Validated locally the system tests.

---
https://datadoghq.atlassian.net/browse/APPSEC-63122
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants