Skip to content

[Exception Replay] Added support for top-most failing local root span + Communicating failure to capture errors #6859

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

Merged
merged 2 commits into from
Apr 30, 2025

Conversation

GreenMatan
Copy link
Contributor

@GreenMatan GreenMatan commented Apr 15, 2025

Summary of changes

  • Error Tracking is now capturing the top most errored span for a service instead of only the root span. This change needs to be reflected in Exception Replay for complete capturing coverage.
  • Better communicating failed to capture errors. There are scenarios where we fail to capture debug info for certain errors, it might be due to all frames belong to 3rd party code / failed to instrument all user frames / else. In those cases we want to communicate that clearly in the UI to improve the UX.

Reason for change

  • Support for top most errored span.
  • Improving the user experience of Exception Replay.

Other details

Fixes DEBUG-3717

@github-actions github-actions bot added the area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) label Apr 15, 2025
@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch from c22e9e8 to 1af4d58 Compare April 15, 2025 13:38
@GreenMatan GreenMatan changed the title [Exception Replay] Added _local root span_ support + No Capture Reason communication [Exception Replay] Added support for top-most failing local root span + Communicating failure to capture errors Apr 15, 2025
@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch from 1af4d58 to 4aa7704 Compare April 15, 2025 13:49
@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Apr 15, 2025

Datadog Report

All test runs e5f6bdf 🔗

2 Total Test Services: 0 Failed, 2 Passed
1 with Regressions

Test Services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Performance Regressions Test Service View
dd-trace-dotnet 0 0 0 260617 3368 31h 35m 38.94s 1 Link
exploration_tests 0 0 0 7433 0 10m 38.43s 0 Link

⌛ Performance Regressions vs Default Branch (1)

  • Baseline_allocation - scenarios 1.65s (+133.42ms, +9%) - Details

@andrewlock
Copy link
Member

andrewlock commented Apr 15, 2025

Benchmarks Report for tracer 🐌

Benchmarks for #6859 compared to master:

  • 1 benchmarks are slower, with geometric mean 1.161
  • 1 benchmarks have fewer allocations

The following thresholds were used for comparing the benchmark speeds:

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

Allocation changes below 0.5% are ignored.

Benchmark details

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

Fewer allocations 🎉 in #6859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.13 KB 6.09 KB -39 B -0.64%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 7.74μs 90.1ns 896ns 0 0 0 5.57 KB
master StartStopWithChild netcoreapp3.1 10.1μs 148ns 1.48μs 0 0 0 5.73 KB
master StartStopWithChild net472 15.3μs 87.8ns 697ns 1.04 0.297 0.0741 6.13 KB
#6859 StartStopWithChild net6.0 9.66μs 306ns 3.06μs 0 0 0 5.57 KB
#6859 StartStopWithChild netcoreapp3.1 10.7μs 119ns 1.19μs 0.047 0 0 5.74 KB
#6859 StartStopWithChild net472 15.1μs 80.5ns 522ns 1.03 0.293 0.0734 6.09 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 513μs 5.69μs 50.6μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 664μs 854ns 3.19μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 841μs 2.7μs 10.1μs 0 0 0 3.31 KB
#6859 WriteAndFlushEnrichedTraces net6.0 526μs 736ns 2.75μs 0 0 0 2.71 KB
#6859 WriteAndFlushEnrichedTraces netcoreapp3.1 703μs 714ns 2.47μs 0 0 0 2.7 KB
#6859 WriteAndFlushEnrichedTraces net472 859μs 739ns 2.66μs 0 0 0 3.31 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 127μs 626ns 2.66μs 0 0 0 14.48 KB
master SendRequest netcoreapp3.1 141μs 821ns 7.15μs 0 0 0 17.28 KB
master SendRequest net472 0.00158ns 0.000518ns 0.00201ns 0 0 0 0 b
#6859 SendRequest net6.0 127μs 736ns 6.16μs 0 0 0 14.48 KB
#6859 SendRequest netcoreapp3.1 148μs 730ns 3.26μs 0 0 0 17.28 KB
#6859 SendRequest net472 0.00352ns 0.00144ns 0.00556ns 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 653μs 7.16μs 70.9μs 0 0 0 41.81 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 745μs 8.26μs 80.5μs 0 0 0 41.86 KB
master WriteAndFlushEnrichedTraces net472 871μs 4.95μs 46.7μs 7.35 3.68 0 53.37 KB
#6859 WriteAndFlushEnrichedTraces net6.0 637μs 6.31μs 63.1μs 0 0 0 41.73 KB
#6859 WriteAndFlushEnrichedTraces netcoreapp3.1 712μs 5.85μs 57.3μs 0 0 0 41.7 KB
#6859 WriteAndFlushEnrichedTraces net472 864μs 5.08μs 48.2μs 8.33 4.17 0 53.45 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.3μs 3.03ns 11.3ns 0.0129 0 0 1.03 KB
master ExecuteNonQuery netcoreapp3.1 1.78μs 3.2ns 11.1ns 0.00901 0 0 1.02 KB
master ExecuteNonQuery net472 2.15μs 1.56ns 5.83ns 0.153 0.0109 0 995 B
#6859 ExecuteNonQuery net6.0 1.32μs 3.61ns 14ns 0.0133 0 0 1.03 KB
#6859 ExecuteNonQuery netcoreapp3.1 1.8μs 6.78ns 26.3ns 0.00894 0 0 1.02 KB
#6859 ExecuteNonQuery net472 1.96μs 4.74ns 17.7ns 0.156 0.00976 0 995 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.32μs 1.17ns 4.53ns 0.0133 0 0 984 B
master CallElasticsearch netcoreapp3.1 1.6μs 1.34ns 4.83ns 0.00809 0 0 984 B
master CallElasticsearch net472 2.58μs 1.38ns 4.98ns 0.154 0 0 1 KB
master CallElasticsearchAsync net6.0 1.28μs 1.58ns 6.13ns 0.0126 0 0 960 B
master CallElasticsearchAsync netcoreapp3.1 1.73μs 1.34ns 5.17ns 0.00864 0 0 1.03 KB
master CallElasticsearchAsync net472 2.6μs 1.17ns 4.53ns 0.156 0 0 1.06 KB
#6859 CallElasticsearch net6.0 1.4μs 8.04ns 63.9ns 0.0115 0 0 984 B
#6859 CallElasticsearch netcoreapp3.1 1.62μs 2.86ns 11.1ns 0.00801 0 0 984 B
#6859 CallElasticsearch net472 2.53μs 1.77ns 6.86ns 0.153 0 0 1 KB
#6859 CallElasticsearchAsync net6.0 1.28μs 0.965ns 3.74ns 0.0128 0 0 960 B
#6859 CallElasticsearchAsync netcoreapp3.1 1.64μs 2.92ns 10.9ns 0.00813 0 0 1.03 KB
#6859 CallElasticsearchAsync net472 2.69μs 1.87ns 7.22ns 0.162 0 0 1.06 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.35μs 0.862ns 3.23ns 0.0135 0 0 960 B
master ExecuteAsync netcoreapp3.1 1.62μs 1.7ns 6.12ns 0.00819 0 0 960 B
master ExecuteAsync net472 1.81μs 0.999ns 3.74ns 0.145 0 0 923 B
#6859 ExecuteAsync net6.0 1.26μs 1.44ns 5.4ns 0.0127 0 0 960 B
#6859 ExecuteAsync netcoreapp3.1 1.74μs 2.35ns 8.46ns 0.00864 0 0 960 B
#6859 ExecuteAsync net472 1.92μs 4.21ns 15.7ns 0.144 0 0 923 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.4μs 1.76ns 6.09ns 0.0221 0 0 2.32 KB
master SendAsync netcoreapp3.1 5.29μs 9.69ns 37.5ns 0.0263 0 0 2.86 KB
master SendAsync net472 7.45μs 5.2ns 19.5ns 0.49 0 0 3.13 KB
#6859 SendAsync net6.0 4.42μs 6.02ns 21.7ns 0.0221 0 0 2.32 KB
#6859 SendAsync netcoreapp3.1 5.45μs 4.49ns 17.4ns 0.0271 0 0 2.86 KB
#6859 SendAsync net472 7.52μs 4.76ns 18.4ns 0.495 0 0 3.13 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.68μs 1.82ns 7.07ns 0.0168 0 0 1.71 KB
master EnrichedLog netcoreapp3.1 2.34μs 1.83ns 7.09ns 0.0118 0 0 1.71 KB
master EnrichedLog net472 2.65μs 1.81ns 7.02ns 0.25 0 0 1.64 KB
#6859 EnrichedLog net6.0 1.61μs 1.74ns 6.75ns 0.0225 0 0 1.71 KB
#6859 EnrichedLog netcoreapp3.1 2.32μs 0.957ns 3.58ns 0.0116 0 0 1.71 KB
#6859 EnrichedLog net472 2.49μs 1.53ns 5.73ns 0.259 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 112μs 295ns 1.14μs 0 0 0 4.32 KB
master EnrichedLog netcoreapp3.1 115μs 424ns 1.64μs 0 0 0 4.32 KB
master EnrichedLog net472 149μs 226ns 876ns 0 0 0 4.51 KB
#6859 EnrichedLog net6.0 112μs 237ns 888ns 0 0 0 4.32 KB
#6859 EnrichedLog netcoreapp3.1 115μs 147ns 529ns 0 0 0 4.32 KB
#6859 EnrichedLog net472 150μs 197ns 763ns 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 3.26μs 2.4ns 9.29ns 0.0331 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 4.27μs 5.13ns 19.9ns 0.0214 0 0 2.26 KB
master EnrichedLog net472 4.89μs 3.09ns 12ns 0.318 0 0 2.09 KB
#6859 EnrichedLog net6.0 3.12μs 2.15ns 8.31ns 0.0313 0 0 2.26 KB
#6859 EnrichedLog netcoreapp3.1 4.08μs 3.85ns 13.9ns 0.0204 0 0 2.26 KB
#6859 EnrichedLog net472 4.95μs 0.925ns 3.33ns 0.322 0 0 2.09 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.37μs 1.14ns 4.41ns 0.0138 0 0 1.15 KB
master SendReceive netcoreapp3.1 1.8μs 1.13ns 4.22ns 0.00907 0 0 1.15 KB
master SendReceive net472 2.16μs 1.57ns 6.06ns 0.179 0 0 1.16 KB
#6859 SendReceive net6.0 1.31μs 0.786ns 2.94ns 0.0131 0 0 1.15 KB
#6859 SendReceive netcoreapp3.1 1.8μs 2.44ns 9.14ns 0.00892 0 0 1.15 KB
#6859 SendReceive net472 2.08μs 0.975ns 3.78ns 0.178 0 0 1.16 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.83μs 1.73ns 6.69ns 0.0142 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 3.9μs 2.18ns 7.85ns 0.0194 0 0 1.69 KB
master EnrichedLog net472 4.46μs 2.75ns 10.6ns 0.313 0 0 2.08 KB
#6859 EnrichedLog net6.0 2.76μs 2.24ns 8.67ns 0.0139 0 0 1.64 KB
#6859 EnrichedLog netcoreapp3.1 4.02μs 4.06ns 14.7ns 0.0198 0 0 1.69 KB
#6859 EnrichedLog net472 4.52μs 2.43ns 9.08ns 0.317 0 0 2.08 KB
Benchmarks.Trace.SpanBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #6859

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 1.161 411.77 478.03

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 412ns 0.354ns 1.32ns 0.00815 0 0 584 B
master StartFinishSpan netcoreapp3.1 582ns 0.765ns 2.96ns 0.00573 0 0 584 B
master StartFinishSpan net472 658ns 0.658ns 2.37ns 0.0922 0 0 586 B
master StartFinishScope net6.0 492ns 0.316ns 1.18ns 0.00975 0 0 704 B
master StartFinishScope netcoreapp3.1 752ns 0.69ns 2.58ns 0.00755 0 0 704 B
master StartFinishScope net472 838ns 0.778ns 3.01ns 0.105 0 0 666 B
#6859 StartFinishSpan net6.0 478ns 0.517ns 1.86ns 0.00719 0 0 584 B
#6859 StartFinishSpan netcoreapp3.1 572ns 0.394ns 1.47ns 0.0057 0 0 584 B
#6859 StartFinishSpan net472 681ns 0.303ns 1.17ns 0.0924 0 0 586 B
#6859 StartFinishScope net6.0 495ns 0.881ns 3.41ns 0.00999 0 0 704 B
#6859 StartFinishScope netcoreapp3.1 774ns 0.696ns 2.41ns 0.00743 0 0 704 B
#6859 StartFinishScope net472 842ns 0.474ns 1.84ns 0.105 0 0 666 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 597ns 0.475ns 1.84ns 0.00901 0 0 704 B
master RunOnMethodBegin netcoreapp3.1 1μs 1.28ns 4.78ns 0.00501 0 0 704 B
master RunOnMethodBegin net472 1.14μs 1.45ns 5.62ns 0.102 0 0 666 B
#6859 RunOnMethodBegin net6.0 582ns 0.455ns 1.76ns 0.00878 0 0 704 B
#6859 RunOnMethodBegin netcoreapp3.1 933ns 0.824ns 3.08ns 0.00928 0 0 704 B
#6859 RunOnMethodBegin net472 1.05μs 0.405ns 1.57ns 0.105 0 0 666 B

@andrewlock
Copy link
Member

andrewlock commented Apr 15, 2025

Execution-Time Benchmarks Report ⏱️

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

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

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

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

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

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6859) - mean (69ms)  : 66, 72
     .   : milestone, 69,
    master - mean (69ms)  : 66, 72
     .   : milestone, 69,

    section CallTarget+Inlining+NGEN
    This PR (6859) - mean (1,009ms)  : 984, 1035
     .   : milestone, 1009,
    master - mean (1,007ms)  : 987, 1027
     .   : milestone, 1007,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6859) - mean (103ms)  : 101, 104
     .   : milestone, 103,
    master - mean (102ms)  : 100, 104
     .   : milestone, 102,

    section CallTarget+Inlining+NGEN
    This PR (6859) - mean (695ms)  : 671, 719
     .   : milestone, 695,
    master - mean (694ms)  : 671, 717
     .   : milestone, 694,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6859) - mean (90ms)  : 88, 91
     .   : milestone, 90,
    master - mean (89ms)  : 87, 91
     .   : milestone, 89,

    section CallTarget+Inlining+NGEN
    This PR (6859) - mean (657ms)  : 629, 686
     .   : milestone, 657,
    master - mean (657ms)  : 632, 683
     .   : milestone, 657,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6859) - mean (189ms)  : 185, 194
     .   : milestone, 189,
    master - mean (189ms)  : 186, 193
     .   : milestone, 189,

    section CallTarget+Inlining+NGEN
    This PR (6859) - mean (1,111ms)  : 1085, 1137
     .   : milestone, 1111,
    master - mean (1,104ms)  : 1075, 1133
     .   : milestone, 1104,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6859) - mean (269ms)  : 264, 274
     .   : milestone, 269,
    master - mean (268ms)  : 264, 272
     .   : milestone, 268,

    section CallTarget+Inlining+NGEN
    This PR (6859) - mean (877ms)  : 843, 912
     .   : milestone, 877,
    master - mean (882ms)  : 854, 910
     .   : milestone, 882,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6859) - mean (261ms)  : 257, 266
     .   : milestone, 261,
    master - mean (260ms)  : 257, 264
     .   : milestone, 260,

    section CallTarget+Inlining+NGEN
    This PR (6859) - mean (871ms)  : 842, 900
     .   : milestone, 871,
    master - mean (870ms)  : 842, 899
     .   : milestone, 870,

Loading

@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch 2 times, most recently from edcc95a to 7717345 Compare April 15, 2025 16:36
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Apr 16, 2025

Datadog Report

Branch report: matang/exception-replay-no-capture-reason
Commit report: 280a82f
Test service: dd-trace-dotnet

✅ 0 Failed, 6 Passed, 0 Skipped, 0s Total Time

@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch from 7717345 to 4d6a886 Compare April 17, 2025 14:13
@GreenMatan GreenMatan marked this pull request as ready for review April 17, 2025 14:16
@GreenMatan GreenMatan requested review from a team as code owners April 17, 2025 14:16
@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch from 4d6a886 to 280a82f Compare April 20, 2025 15:09
@pr-commenter
Copy link

pr-commenter bot commented Apr 20, 2025

Benchmarks

Benchmarks Report for tracer 🐌

Benchmarks for #6859 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.134
  • 1 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 58.2ns 386ns 0 0 0 5.55 KB
master StartStopWithChild netcoreapp3.1 13.7μs 65.2ns 277ns 0 0 0 5.75 KB
master StartStopWithChild net472 22μs 109ns 461ns 1 0.334 0.111 6.16 KB
#6859 StartStopWithChild net6.0 10.4μs 57.9ns 361ns 0 0 0 5.54 KB
#6859 StartStopWithChild netcoreapp3.1 13.4μs 71.6ns 398ns 0 0 0 5.74 KB
#6859 StartStopWithChild net472 21.8μs 122ns 751ns 0.874 0.328 0 6.18 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #6859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 3.31 KB 3.35 KB 46 B 1.39%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 934μs 61.1ns 229ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.06ms 3.47μs 13.4μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.24ms 64.8ns 251ns 0 0 0 3.31 KB
#6859 WriteAndFlushEnrichedTraces net6.0 918μs 110ns 411ns 0 0 0 2.7 KB
#6859 WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 135ns 522ns 0 0 0 2.7 KB
#6859 WriteAndFlushEnrichedTraces net472 1.24ms 29.5ns 110ns 0 0 0 3.35 KB
Benchmarks.Trace.AspNetCoreBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61μs 42.3ns 158ns 0 0 0 14.53 KB
master SendRequest netcoreapp3.1 72.6μs 83.5ns 324ns 0 0 0 17.42 KB
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#6859 SendRequest net6.0 61.2μs 42.1ns 152ns 0 0 0 14.53 KB
#6859 SendRequest netcoreapp3.1 71.2μs 137ns 512ns 0 0 0 17.42 KB
#6859 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #6859

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 1.134 928,639.73 818,695.31

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 639μs 764ns 2.86μs 0 0 0 41.77 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 723μs 4μs 24.7μs 0 0 0 41.9 KB
master WriteAndFlushEnrichedTraces net472 930μs 3.89μs 15.1μs 4.46 0 0 55.9 KB
#6859 WriteAndFlushEnrichedTraces net6.0 650μs 2.61μs 10.1μs 0 0 0 41.78 KB
#6859 WriteAndFlushEnrichedTraces netcoreapp3.1 731μs 2.66μs 9.94μs 0 0 0 41.72 KB
#6859 WriteAndFlushEnrichedTraces net472 825μs 3.67μs 14.2μs 7.81 0 0 55.9 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.92μs 6.32ns 24.5ns 0 0 0 1.03 KB
master ExecuteNonQuery netcoreapp3.1 2.51μs 7.39ns 28.6ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.81μs 3.52ns 13.6ns 0.155 0.0141 0 995 B
#6859 ExecuteNonQuery net6.0 1.96μs 6.07ns 23.5ns 0 0 0 1.03 KB
#6859 ExecuteNonQuery netcoreapp3.1 2.6μs 7.86ns 30.4ns 0 0 0 1.02 KB
#6859 ExecuteNonQuery net472 2.77μs 4.37ns 16.9ns 0.152 0.0138 0 995 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.75μs 9.05ns 45.2ns 0 0 0 1.04 KB
master CallElasticsearch netcoreapp3.1 2.28μs 11.3ns 46.6ns 0 0 0 1.04 KB
master CallElasticsearch net472 3.54μs 4.99ns 19.3ns 0.158 0 0 1.05 KB
master CallElasticsearchAsync net6.0 1.84μs 1.57ns 6.1ns 0 0 0 1.02 KB
master CallElasticsearchAsync netcoreapp3.1 2.35μs 9.13ns 35.4ns 0 0 0 1.09 KB
master CallElasticsearchAsync net472 3.56μs 5.62ns 21.8ns 0.16 0 0 1.11 KB
#6859 CallElasticsearch net6.0 1.8μs 7.82ns 30.3ns 0 0 0 1.04 KB
#6859 CallElasticsearch netcoreapp3.1 2.34μs 11.4ns 45.5ns 0 0 0 1.04 KB
#6859 CallElasticsearch net472 3.49μs 3.1ns 12ns 0.157 0 0 1.05 KB
#6859 CallElasticsearchAsync net6.0 1.84μs 9ns 38.2ns 0 0 0 1.02 KB
#6859 CallElasticsearchAsync netcoreapp3.1 2.32μs 10.3ns 40.1ns 0 0 0 1.09 KB
#6859 CallElasticsearchAsync net472 3.59μs 3.46ns 13.4ns 0.161 0 0 1.11 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 1.34ns 5.18ns 0 0 0 960 B
master ExecuteAsync netcoreapp3.1 2.36μs 7.56ns 29.3ns 0 0 0 960 B
master ExecuteAsync net472 2.6μs 0.873ns 3.38ns 0.142 0 0 923 B
#6859 ExecuteAsync net6.0 1.83μs 8.82ns 36.4ns 0 0 0 960 B
#6859 ExecuteAsync netcoreapp3.1 2.26μs 6.69ns 25.9ns 0 0 0 960 B
#6859 ExecuteAsync net472 2.58μs 6.73ns 26.1ns 0.142 0 0 923 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 4.17ns 15.6ns 0 0 0 2.37 KB
master SendAsync netcoreapp3.1 8.41μs 13.2ns 51.2ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 6.76ns 24.4ns 0.491 0 0 3.19 KB
#6859 SendAsync net6.0 7.02μs 18.5ns 71.5ns 0 0 0 2.37 KB
#6859 SendAsync netcoreapp3.1 8.62μs 6.29ns 21.8ns 0 0 0 2.9 KB
#6859 SendAsync net472 12.6μs 11.7ns 45.3ns 0.502 0 0 3.19 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.56μs 13.3ns 65.3ns 0 0 0 1.76 KB
master EnrichedLog netcoreapp3.1 3.48μs 3.28ns 12.7ns 0 0 0 1.76 KB
master EnrichedLog net472 3.98μs 2.85ns 11ns 0.255 0 0 1.69 KB
#6859 EnrichedLog net6.0 2.57μs 0.953ns 3.56ns 0 0 0 1.76 KB
#6859 EnrichedLog netcoreapp3.1 3.41μs 16.1ns 66.3ns 0 0 0 1.76 KB
#6859 EnrichedLog net472 3.99μs 3.59ns 13.9ns 0.258 0 0 1.69 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 30.4ns 105ns 0 0 0 4.37 KB
master EnrichedLog netcoreapp3.1 127μs 155ns 561ns 0 0 0 4.37 KB
master EnrichedLog net472 168μs 178ns 690ns 0 0 0 4.57 KB
#6859 EnrichedLog net6.0 124μs 569ns 2.28μs 0 0 0 4.37 KB
#6859 EnrichedLog netcoreapp3.1 126μs 52.9ns 191ns 0 0 0 4.37 KB
#6859 EnrichedLog net472 166μs 281ns 1.09μs 0 0 0 4.57 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.05μs 15.8ns 59.3ns 0 0 0 2.32 KB
master EnrichedLog netcoreapp3.1 6.62μs 22.9ns 88.9ns 0 0 0 2.32 KB
master EnrichedLog net472 7.3μs 8.52ns 33ns 0.328 0 0 2.14 KB
#6859 EnrichedLog net6.0 5.07μs 16.3ns 63.1ns 0 0 0 2.32 KB
#6859 EnrichedLog netcoreapp3.1 6.8μs 4.94ns 18.5ns 0 0 0 2.32 KB
#6859 EnrichedLog net472 7.27μs 8.35ns 32.3ns 0.326 0 0 2.14 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.11μs 3.73ns 13.9ns 0 0 0 1.21 KB
master SendReceive netcoreapp3.1 2.66μs 11.1ns 41.5ns 0 0 0 1.21 KB
master SendReceive net472 3.12μs 6.1ns 23.6ns 0.186 0 0 1.21 KB
#6859 SendReceive net6.0 1.98μs 8.89ns 35.6ns 0 0 0 1.21 KB
#6859 SendReceive netcoreapp3.1 2.65μs 8.31ns 32.2ns 0 0 0 1.21 KB
#6859 SendReceive net472 3.04μs 1.38ns 5.34ns 0.185 0 0 1.21 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.21μs 20.7ns 85.4ns 0 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 5.71μs 11.4ns 44.2ns 0 0 0 1.69 KB
master EnrichedLog net472 6.65μs 5.77ns 22.4ns 0.33 0 0 2.08 KB
#6859 EnrichedLog net6.0 4.14μs 12.9ns 48.2ns 0 0 0 1.64 KB
#6859 EnrichedLog netcoreapp3.1 5.66μs 9.76ns 37.8ns 0 0 0 1.69 KB
#6859 EnrichedLog net472 6.65μs 8.1ns 31.4ns 0.301 0 0 2.08 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 767ns 0.518ns 2.01ns 0 0 0 584 B
master StartFinishSpan netcoreapp3.1 943ns 0.947ns 3.67ns 0 0 0 584 B
master StartFinishSpan net472 914ns 0.167ns 0.624ns 0.092 0 0 586 B
master StartFinishScope net6.0 914ns 4.53ns 19.2ns 0 0 0 704 B
master StartFinishScope netcoreapp3.1 1.15μs 5.83ns 28ns 0 0 0 704 B
master StartFinishScope net472 1.1μs 0.169ns 0.631ns 0.105 0 0 666 B
#6859 StartFinishSpan net6.0 751ns 3.77ns 16ns 0 0 0 584 B
#6859 StartFinishSpan netcoreapp3.1 949ns 4.51ns 18.6ns 0 0 0 584 B
#6859 StartFinishSpan net472 909ns 0.291ns 1.13ns 0.0915 0 0 586 B
#6859 StartFinishScope net6.0 901ns 4.98ns 29.5ns 0 0 0 704 B
#6859 StartFinishScope netcoreapp3.1 1.12μs 5.52ns 22.7ns 0 0 0 704 B
#6859 StartFinishScope net472 1.1μs 0.822ns 3.18ns 0.104 0 0 666 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.02μs 4.89ns 21.3ns 0 0 0 704 B
master RunOnMethodBegin netcoreapp3.1 1.36μs 1.07ns 3.85ns 0 0 0 704 B
master RunOnMethodBegin net472 1.44μs 2.22ns 8.59ns 0.102 0 0 666 B
#6859 RunOnMethodBegin net6.0 1.05μs 5ns 20.6ns 0 0 0 704 B
#6859 RunOnMethodBegin netcoreapp3.1 1.36μs 4.49ns 16.2ns 0 0 0 704 B
#6859 RunOnMethodBegin net472 1.36μs 0.542ns 2.1ns 0.102 0 0 666 B

@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch 3 times, most recently from de935dc to a78fc36 Compare April 23, 2025 12:45
@@ -423,6 +423,7 @@
"DD_TRACE_COMPUTE_STATS": "dd_trace_compute_stats",
"DD_EXCEPTION_DEBUGGING_ENABLED": "dd_exception_debugging_enabled",
"DD_EXCEPTION_DEBUGGING_MAX_FRAMES_TO_CAPTURE": "dd_exception_debugging_max_frames_to_capture",
"DD_EXCEPTION_REPLAY_CAPTURE_MAX_FRAMES": "dd_exception_replay_capture_max_frames",
Copy link
Contributor

Choose a reason for hiding this comment

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

👍🏼

Copy link
Member

Choose a reason for hiding this comment

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

If this is fundamentally the same feature as DD_EXCEPTION_DEBUGGING_MAX_FRAMES_TO_CAPTURE then it should probably map to the same config value. i.e. they're different values for the same configuration?

@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch from a78fc36 to e5d5179 Compare April 24, 2025 12:02
@@ -423,6 +423,7 @@
"DD_TRACE_COMPUTE_STATS": "dd_trace_compute_stats",
"DD_EXCEPTION_DEBUGGING_ENABLED": "dd_exception_debugging_enabled",
"DD_EXCEPTION_DEBUGGING_MAX_FRAMES_TO_CAPTURE": "dd_exception_debugging_max_frames_to_capture",
"DD_EXCEPTION_REPLAY_CAPTURE_MAX_FRAMES": "dd_exception_replay_capture_max_frames",
Copy link
Member

Choose a reason for hiding this comment

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

If this is fundamentally the same feature as DD_EXCEPTION_DEBUGGING_MAX_FRAMES_TO_CAPTURE then it should probably map to the same config value. i.e. they're different values for the same configuration?

@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch 2 times, most recently from ea7b1b5 to 3aeea82 Compare April 28, 2025 14:10
@GreenMatan GreenMatan force-pushed the matang/exception-replay-no-capture-reason branch from 3aeea82 to e5f6bdf Compare April 29, 2025 15:07
@GreenMatan GreenMatan merged commit e97c9e5 into master Apr 30, 2025
132 of 133 checks passed
@GreenMatan GreenMatan deleted the matang/exception-replay-no-capture-reason branch April 30, 2025 07:42
@github-actions github-actions bot added this to the vNext-v3 milestone Apr 30, 2025
@andrewlock andrewlock added area:debugger and removed area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) labels May 6, 2025
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