Skip to content

Conversation

@nhulston
Copy link
Contributor

@nhulston nhulston commented Mar 17, 2025

Background

Related PR for more details: #6655

Span pointers a unique case of Span Links when it is impossible to pass the Trace ID and Span ID between the spans that need to be linked.

We do this by calculating a unique hash on both spans we want to link. When the calculated hashes for the upstream code and the downstream lambdas match, the Datadog frontend will link the two traces together.

Full RFC: https://docs.google.com/document/d/1vl16cRkjQ2tVUiLOKub2NpAVx3mXlNp9menwvCv9UG0/edit?tab=t.0

Summary of changes

Adds span pointers in DynamoDB for updateItem and deleteItem.

These two are the simplest cases, since we know the primary key/values. In a future PR, I will get to putItem and batch updates, since those are more complicated cases.

Reason for change

Span pointers is a new feature being developed by the Serverless team. This feature already exists in Python & Node, and I'm working on adding it to other runtimes (.NET, Java, Golang).

Implementation details

Test coverage

Manual tests, unit tests, and integration tests (snapshots)

Other details

@nhulston nhulston force-pushed the nicholas.hulston/dynamodb-span-pointers-update-delete-item branch from 0ec5b03 to 48bb5e8 Compare March 17, 2025 18:25
@andrewlock
Copy link
Member

andrewlock commented Mar 17, 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 (6775) - mean (70ms)  : 66, 73
     .   : milestone, 70,
    master - mean (70ms)  : 67, 72
     .   : milestone, 70,

    section CallTarget+Inlining+NGEN
    This PR (6775) - mean (1,007ms)  : 988, 1026
     .   : milestone, 1007,
    master - mean (1,006ms)  : 986, 1027
     .   : milestone, 1006,

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

    section CallTarget+Inlining+NGEN
    This PR (6775) - mean (686ms)  : 671, 700
     .   : milestone, 686,
    master - mean (689ms)  : 672, 706
     .   : milestone, 689,

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

    section CallTarget+Inlining+NGEN
    This PR (6775) - mean (640ms)  : 624, 656
     .   : milestone, 640,
    master - mean (645ms)  : 630, 660
     .   : milestone, 645,

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

    section CallTarget+Inlining+NGEN
    This PR (6775) - mean (1,108ms)  : 1075, 1141
     .   : milestone, 1108,
    master - mean (1,105ms)  : 1077, 1133
     .   : milestone, 1105,

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

    section CallTarget+Inlining+NGEN
    This PR (6775) - mean (872ms)  : 841, 902
     .   : milestone, 872,
    master - mean (878ms)  : 839, 916
     .   : milestone, 878,

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

    section CallTarget+Inlining+NGEN
    This PR (6775) - mean (854ms)  : 823, 884
     .   : milestone, 854,
    master - mean (861ms)  : 821, 902
     .   : milestone, 861,

Loading

@andrewlock
Copy link
Member

andrewlock commented Mar 17, 2025

Benchmarks Report for tracer 🐌

Benchmarks for #6775 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.229
  • 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 ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 8.05μs 46.4ns 359ns 0.0159 0.00796 0 5.61 KB
master StartStopWithChild netcoreapp3.1 9.98μs 54.5ns 327ns 0.0201 0.01 0 5.8 KB
master StartStopWithChild net472 16.2μs 46.5ns 180ns 1.06 0.321 0.104 6.21 KB
#6775 StartStopWithChild net6.0 7.87μs 44.4ns 314ns 0.0156 0.0078 0 5.61 KB
#6775 StartStopWithChild netcoreapp3.1 10.2μs 55.5ns 347ns 0.0213 0.0107 0 5.8 KB
#6775 StartStopWithChild net472 16.2μs 53.7ns 208ns 1.04 0.289 0.0964 6.21 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 517μs 757ns 2.93μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 655μs 822ns 3.18μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 847μs 705ns 2.73μs 0.422 0 0 3.3 KB
#6775 WriteAndFlushEnrichedTraces net6.0 509μs 775ns 3μs 0 0 0 2.7 KB
#6775 WriteAndFlushEnrichedTraces netcoreapp3.1 649μs 387ns 1.5μs 0 0 0 2.7 KB
#6775 WriteAndFlushEnrichedTraces net472 850μs 734ns 2.84μs 0.425 0 0 3.3 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 133μs 246ns 955ns 0.133 0 0 14.47 KB
master SendRequest netcoreapp3.1 144μs 419ns 1.62μs 0.216 0 0 17.27 KB
master SendRequest net472 0.000227ns 0.000126ns 0.000454ns 0 0 0 0 b
#6775 SendRequest net6.0 134μs 284ns 1.06μs 0.134 0 0 14.47 KB
#6775 SendRequest netcoreapp3.1 142μs 512ns 1.98μs 0.212 0 0 17.27 KB
#6775 SendRequest net472 0.00044ns 0.000237ns 0.000918ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #6775

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.72 KB 41.49 KB -233 B -0.56%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 589μs 3.4μs 27.2μs 0.568 0 0 41.72 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 713μs 4.13μs 35μs 0.359 0 0 41.77 KB
master WriteAndFlushEnrichedTraces net472 841μs 4.1μs 17.4μs 8.45 2.53 0.422 53.29 KB
#6775 WriteAndFlushEnrichedTraces net6.0 589μs 3.23μs 18μs 0.571 0 0 41.49 KB
#6775 WriteAndFlushEnrichedTraces netcoreapp3.1 689μs 3.8μs 21.8μs 0.332 0 0 41.8 KB
#6775 WriteAndFlushEnrichedTraces net472 892μs 4.58μs 21.5μs 8.3 2.62 0.437 53.32 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 1.27ns 4.76ns 0.0145 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 1.72μs 2.42ns 9.38ns 0.0138 0 0 1.02 KB
master ExecuteNonQuery net472 2.13μs 3.99ns 15.4ns 0.156 0.00106 0 987 B
#6775 ExecuteNonQuery net6.0 1.35μs 1.88ns 7.28ns 0.0142 0 0 1.02 KB
#6775 ExecuteNonQuery netcoreapp3.1 1.76μs 1.79ns 6.93ns 0.0133 0 0 1.02 KB
#6775 ExecuteNonQuery net472 2.05μs 2.41ns 9.33ns 0.156 0.00103 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #6775

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync‑net6.0 1.229 1,441.07 1,172.58

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.15μs 0.443ns 1.66ns 0.0138 0 0 976 B
master CallElasticsearch netcoreapp3.1 1.6μs 0.602ns 2.33ns 0.0132 0 0 976 B
master CallElasticsearch net472 2.69μs 1.43ns 5.55ns 0.157 0 0 995 B
master CallElasticsearchAsync net6.0 1.44μs 0.59ns 2.21ns 0.0129 0 0 952 B
master CallElasticsearchAsync netcoreapp3.1 1.72μs 1.33ns 4.6ns 0.0137 0 0 1.02 KB
master CallElasticsearchAsync net472 2.58μs 1.55ns 5.99ns 0.167 0 0 1.05 KB
#6775 CallElasticsearch net6.0 1.28μs 0.589ns 2.2ns 0.0135 0 0 976 B
#6775 CallElasticsearch netcoreapp3.1 1.59μs 0.679ns 2.63ns 0.0134 0 0 976 B
#6775 CallElasticsearch net472 2.65μs 2.01ns 7.8ns 0.158 0 0 995 B
#6775 CallElasticsearchAsync net6.0 1.17μs 0.794ns 2.97ns 0.013 0 0 952 B
#6775 CallElasticsearchAsync netcoreapp3.1 1.71μs 0.834ns 3.12ns 0.0137 0 0 1.02 KB
#6775 CallElasticsearchAsync net472 2.58μs 1.89ns 7.3ns 0.167 0 0 1.05 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.3μs 0.549ns 2.05ns 0.013 0 0 952 B
master ExecuteAsync netcoreapp3.1 1.69μs 0.981ns 3.8ns 0.0126 0 0 952 B
master ExecuteAsync net472 1.75μs 0.447ns 1.73ns 0.145 0 0 915 B
#6775 ExecuteAsync net6.0 1.23μs 0.328ns 1.18ns 0.0135 0 0 952 B
#6775 ExecuteAsync netcoreapp3.1 1.71μs 1.39ns 5.18ns 0.013 0 0 952 B
#6775 ExecuteAsync net472 1.77μs 0.384ns 1.44ns 0.145 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 4.29μs 1.83ns 6.61ns 0.0323 0 0 2.31 KB
master SendAsync netcoreapp3.1 5.3μs 2.41ns 9.34ns 0.0371 0 0 2.85 KB
master SendAsync net472 7.53μs 1.4ns 5.43ns 0.493 0 0 3.12 KB
#6775 SendAsync net6.0 4.25μs 1.6ns 5.76ns 0.0319 0 0 2.31 KB
#6775 SendAsync netcoreapp3.1 5.48μs 1.29ns 4.81ns 0.038 0 0 2.85 KB
#6775 SendAsync net472 7.45μs 1.35ns 5.24ns 0.496 0 0 3.12 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.58μs 0.958ns 3.71ns 0.0237 0 0 1.69 KB
master EnrichedLog netcoreapp3.1 2.37μs 0.96ns 3.59ns 0.0225 0 0 1.69 KB
master EnrichedLog net472 2.44μs 1.31ns 5.07ns 0.258 0 0 1.62 KB
#6775 EnrichedLog net6.0 1.52μs 0.862ns 3.34ns 0.0237 0 0 1.69 KB
#6775 EnrichedLog netcoreapp3.1 2.16μs 1.32ns 4.94ns 0.0227 0 0 1.69 KB
#6775 EnrichedLog net472 2.51μs 1.78ns 6.89ns 0.258 0 0 1.62 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 113μs 108ns 417ns 0.0561 0 0 4.3 KB
master EnrichedLog netcoreapp3.1 119μs 214ns 800ns 0.0589 0 0 4.3 KB
master EnrichedLog net472 151μs 110ns 428ns 0.678 0.226 0 4.49 KB
#6775 EnrichedLog net6.0 112μs 118ns 458ns 0.0559 0 0 4.3 KB
#6775 EnrichedLog netcoreapp3.1 117μs 150ns 563ns 0 0 0 4.3 KB
#6775 EnrichedLog net472 151μs 125ns 469ns 0.68 0.227 0 4.49 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.13μs 1ns 3.88ns 0.0312 0 0 2.25 KB
master EnrichedLog netcoreapp3.1 4.06μs 0.887ns 3.32ns 0.0305 0 0 2.25 KB
master EnrichedLog net472 4.72μs 1.46ns 5.65ns 0.327 0 0 2.07 KB
#6775 EnrichedLog net6.0 3.11μs 2.45ns 9.47ns 0.0309 0 0 2.25 KB
#6775 EnrichedLog netcoreapp3.1 4.4μs 1.48ns 5.74ns 0.0309 0 0 2.25 KB
#6775 EnrichedLog net472 4.75μs 1.28ns 4.96ns 0.328 0 0 2.07 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.31μs 0.843ns 3.26ns 0.0157 0 0 1.14 KB
master SendReceive netcoreapp3.1 1.78μs 2.45ns 9.5ns 0.0151 0 0 1.14 KB
master SendReceive net472 2.04μs 1.38ns 5.36ns 0.184 0 0 1.16 KB
#6775 SendReceive net6.0 1.38μs 0.588ns 2.28ns 0.0158 0 0 1.14 KB
#6775 SendReceive netcoreapp3.1 1.78μs 0.879ns 3.17ns 0.0151 0 0 1.14 KB
#6775 SendReceive net472 2.05μs 0.677ns 2.53ns 0.183 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.75μs 0.697ns 2.61ns 0.022 0 0 1.62 KB
master EnrichedLog netcoreapp3.1 4.26μs 1.42ns 5.49ns 0.0212 0 0 1.67 KB
master EnrichedLog net472 4.53μs 2.58ns 10ns 0.328 0 0 2.07 KB
#6775 EnrichedLog net6.0 2.87μs 1.04ns 3.87ns 0.0229 0 0 1.62 KB
#6775 EnrichedLog netcoreapp3.1 3.92μs 1.75ns 6.77ns 0.0214 0 0 1.67 KB
#6775 EnrichedLog net472 4.65μs 3.75ns 14.5ns 0.328 0 0 2.07 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 413ns 0.575ns 2.23ns 0.0081 0 0 576 B
master StartFinishSpan netcoreapp3.1 612ns 0.345ns 1.33ns 0.0079 0 0 576 B
master StartFinishSpan net472 635ns 0.137ns 0.514ns 0.0917 0 0 578 B
master StartFinishScope net6.0 520ns 0.146ns 0.565ns 0.00966 0 0 696 B
master StartFinishScope netcoreapp3.1 741ns 0.493ns 1.91ns 0.00923 0 0 696 B
master StartFinishScope net472 873ns 0.208ns 0.807ns 0.104 0 0 658 B
#6775 StartFinishSpan net6.0 452ns 0.0856ns 0.332ns 0.00798 0 0 576 B
#6775 StartFinishSpan netcoreapp3.1 599ns 0.587ns 2.27ns 0.00785 0 0 576 B
#6775 StartFinishSpan net472 682ns 0.202ns 0.783ns 0.0915 0 0 578 B
#6775 StartFinishScope net6.0 494ns 0.16ns 0.599ns 0.00987 0 0 696 B
#6775 StartFinishScope netcoreapp3.1 754ns 0.283ns 1.09ns 0.00943 0 0 696 B
#6775 StartFinishScope net472 893ns 0.18ns 0.65ns 0.104 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 656ns 0.14ns 0.504ns 0.00983 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 987ns 1.16ns 4.18ns 0.00934 0 0 696 B
master RunOnMethodBegin net472 1.05μs 0.348ns 1.35ns 0.104 0 0 658 B
#6775 RunOnMethodBegin net6.0 697ns 0.329ns 1.27ns 0.00971 0 0 696 B
#6775 RunOnMethodBegin netcoreapp3.1 925ns 0.668ns 2.5ns 0.00921 0 0 696 B
#6775 RunOnMethodBegin net472 1.09μs 0.237ns 0.885ns 0.104 0 0 658 B

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Mar 17, 2025

Datadog Report

All test runs 1f9ebcb 🔗

2 Total Test Services: 0 Failed, 2 Passed

Test Services
Service Name Failed Known Flaky New Flaky Passed Skipped Total Time Test Service View
dd-trace-dotnet 0 0 0 564023 4481 36h 17m 25.9s Link
exploration_tests 0 0 0 22085 3 2m 10.41s Link

@nhulston nhulston force-pushed the nicholas.hulston/dynamodb-span-pointers-update-delete-item branch from 05f1a48 to 4807f02 Compare March 17, 2025 20:02
@github-actions
Copy link
Contributor

github-actions bot commented Mar 17, 2025

Snapshots difference summary

The following differences have been observed in committed snapshots. It is meant to help the reviewer.
The diff is simplistic, so please check some files anyway while we improve it.

4 occurrences of :

+    SpanLinks: [
+      {
+        Attributes: {
+          link.kind: span-pointer,
+          ptr.dir: d,
+          ptr.hash: Guid_5,
+          ptr.kind: aws.dynamodb.item
+        }
+      }
+    ]

2 occurrences of :

-      aws.requestId: Guid_5,
+      aws.requestId: Guid_6,

2 occurrences of :

-      aws.requestId: Guid_6,
+      aws.requestId: Guid_7,

2 occurrences of :

-      aws.requestId: Guid_7,
+      aws.requestId: Guid_8,

2 occurrences of :

-      aws.requestId: Guid_8,
+      aws.requestId: Guid_9,

Comment on lines 67 to 77
if (sortedKeys.Length > 0)
{
key1 = sortedKeys[0];
value1 = AwsDynamoDbCommon.GetValueFromDynamoDbAttribute(keys[key1]);
}

if (sortedKeys.Length > 1)
{
key2 = sortedKeys[1];
value2 = AwsDynamoDbCommon.GetValueFromDynamoDbAttribute(keys[key2]);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

if there's only one primary key, we leave key2 and value2 as empty strings. See https://github.com/DataDog/dd-span-pointer-rules/blob/main/AWS/DynamoDB/Item/README.md for more info

@nhulston nhulston marked this pull request as ready for review March 19, 2025 14:23
@nhulston nhulston requested review from a team as code owners March 19, 2025 14:23
Copy link
Collaborator

@bouwkast bouwkast left a comment

Choose a reason for hiding this comment

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

Is this supported in .NET Framework?

If so I'd imagine that the snapshots would change

@nhulston nhulston requested a review from a team as a code owner March 28, 2025 14:17
@nhulston nhulston marked this pull request as draft March 28, 2025 17:48
@nhulston nhulston force-pushed the nicholas.hulston/dynamodb-span-pointers-update-delete-item branch from 5e19fb3 to 412ad72 Compare April 1, 2025 19:50
@nhulston nhulston marked this pull request as ready for review April 2, 2025 14:09
@nhulston nhulston requested a review from lucaspimentel April 2, 2025 14:09
@nhulston
Copy link
Contributor Author

nhulston commented Apr 2, 2025

Is this supported in .NET Framework?

If so I'd imagine that the snapshots would change

Yes it is, but we use localstack in Docker (Docker isn't supported on Windows in Azure CI) for integration tests so the NetFramework snapshots don't need to be updated

@nhulston nhulston requested a review from bouwkast April 2, 2025 14:10
}
catch (Exception exception)
{
Log.Debug("Unable to add span pointer: " + exception.Message);
Copy link
Contributor

@bricefriha bricefriha Apr 2, 2025

Choose a reason for hiding this comment

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

Nitpicky, but for readability/maintenability's sake it might be better to use String Interpolation Datadog.Trace.Logging:

Suggested change
Log.Debug("Unable to add span pointer: " + exception.Message);
Log.Debug(exception, "Unable to add span pointer");

I noticed it's also used a couple of times across the codebase

Edit:
I changed the suggestion after Steven's comment, in which he suggested using Datadog.Trace.Logging. It makes more sense.

Copy link
Contributor

Choose a reason for hiding this comment

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

Edit: I noticed after reading your code further that you used string interpolation later, too, so maybe you did this on purpose. If that's the case, please ignore me 😄

I just don't see why we wouldn't do it here as well

Copy link
Collaborator

Choose a reason for hiding this comment

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

See my other comment above

The correct would be: Log.Debug(exception, "Unable to add span pointer"); while using private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor<DeleteItemIntegration>();

Copy link
Contributor

@bricefriha bricefriha Apr 2, 2025

Choose a reason for hiding this comment

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

Absolutely! you're right.

Thanks for pointing this out

}
catch (Exception exception)
{
Log.Debug("Unable to add span pointer: " + exception.Message);
Copy link
Collaborator

Choose a reason for hiding this comment

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

See my other comment above

The correct would be: Log.Debug(exception, "Unable to add span pointer"); while using private static readonly IDatadogLogger Log = DatadogLogging.GetLoggerFor<DeleteItemIntegration>();

Copy link
Collaborator

@bouwkast bouwkast left a comment

Choose a reason for hiding this comment

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

Thanks this looks good to me!

Comment on lines 63 to 66
if (keys is null || !keys.KeyNames.Any())
{
return;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

On me as I don't think I was specific enough, my only concern here is that we are assuming that KeyNames isn't null, which I think it could be.

However, this everywhere this is called currently is wrapped in try/catch, so I don't think it is a concern.

e.g. if (keys.KeyNames is null) then return

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ah i see, updated thanks

}
catch (Exception exception)
{
Log.Debug(exception, "Unable to add span pointer");
Copy link
Collaborator

Choose a reason for hiding this comment

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

I do wonder what the best practice is for logging exceptions - wondering if maybe we want to always default to Log.Error, but there could be rate limit concerns so maybe we need some better infrastructure around that - mainly wondering this to try and ensure that our own Error Tracking is as useful as possible for us. Nothing to act on here though :)

Copy link
Collaborator

Choose a reason for hiding this comment

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

These Log.Debugs are totally fine though

Copy link
Contributor

@bricefriha bricefriha Apr 4, 2025

Choose a reason for hiding this comment

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

We still need to make this Log.Debug change in other places in the code

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think debug here is fine; if we're unable to add a span pointer, it's no big deal. Span pointers are a 'nice to have' feature but definitely not essential

@nhulston nhulston merged commit d96ba23 into master Apr 7, 2025
125 of 128 checks passed
@nhulston nhulston deleted the nicholas.hulston/dynamodb-span-pointers-update-delete-item branch April 7, 2025 14:22
@github-actions github-actions bot added this to the vNext-v3 milestone Apr 7, 2025
nhulston pushed a commit to DataDog/serverless-gcp-sample-apps that referenced this pull request Sep 8, 2025
Updated
[Datadog.Trace.Bundle](https://github.com/DataDog/dd-trace-dotnet) from
2.56.0 to 3.26.0.

<details>
<summary>Release notes</summary>

_Sourced from [Datadog.Trace.Bundle's
releases](https://github.com/DataDog/dd-trace-dotnet/releases)._

## 3.26.0

## Summary

Various bug fixes and optimizations.

## Changes

### Tracer
* Update build and testing to use .NET 10 preview 7 (#​7170)
* chore: add logging for data pipeline status in TracerSettings (#​7436)
* Use P/Invoke to call `lstat` instead of shelling out to `stat` to
retrieve the inode (#​7453)
* [Native] Convert Rejitters vector to a fixed array (#​7460)
* [Phase 1] chore(configuration): enable DataPipelineEnabled on AAS +
Windows (#​7464)

### ASM
* [AAP] Add Forwarded header as IP source (#​7438)
* [AAP] Add "100.65.0.0/10" as a private IP range (#​7461)
* [IAST] Fix GRPC IAST tests (#​7485)
* [IAST] Delay dataflow creation (#​7440, #​7451, #​7465)

### Continuous Profiler
* [Profiler] Make sure we generate a build-id using SHA-1 (#​7449)
* [Profiler] Try fixing TSAN job (#​7452)

### Serverless
* [Azure Functions] Restore files moved by in-process Azure Functions
SDK (#​7419)

### Fixes
* Support `final="true"` in NLog Logging rules for direct log submission
(#​7445)
* Extract the Managed DevOps pools names to variables (#​7447)
* Update language used in native log messages (#​7467)
* Remove `Samples.TraceAnnotations.VersionMismatch.NewerNuget` (#​7469)
* Remove `Samples.CIVisibilityVersionMismatch` (#​7471)
* Add parameter names to MongoDb `IBsonSerializerProxy.Serialize()`
method (#​7443)
* Fix GRPC instrumentation for BuildHttpErrorResponse. Enable
integration tests. (#​7457)

### Build / Test
* Use mock agent in exploration tests (#​7431)
* [Test Package Versions Bump] Updating package versions (#​7435)
* Use the global.json file to specify the .NET SDK version in GitHub
Actions (#​7442)
* Update Managed DevOps pools images (#​7446)
* Remove smoke test image that won't work (#​7450)
* [Test Package Versions Bump] Updating package versions (#​7455)
* Bump the gh-actions-packages group across 2 directories with 2 updates
(#​7456)
* [Test Package Versions Bump] Updating package versions (#​7458)
* Split dependabot files into separate projects (#​7459)
* Bump actions/setup-dotnet from 4.3.1 to 5.0.0 in the
gh-actions-packages group across 1 directory (#​7463)
* Try to fix dependabot (#​7466)
* Improve logging for `InstrumentationTests` and update dynamic code
scenario (#​7472)
* Fix typo in dependabot yaml (#​7477)
* Fix dependabot again (#​7478)
 ... (truncated)

## 3.25.0

## Summary

- Various bug fixes and optimisations

## Changes

### Tracer
* Implement "enahanced telemetry reporting" (#​7360)
* Don't call `ToUpperInvariant` if we don't need to (#​7393)
* Handle TypeLoadException when retrieving HostingEnvironment (#​7417)
* Add missing `GetDictionary()` method to `ConfigurationBuilder`
(#​7421)
* More `ConfigurationBuilder` refactoring to avoid incorrect usages
(#​7422)
* [Tracer] fix: Re-use runtime metrics writer resources to limit memory
growth (#​7434)

### Continuous Profiler
* [Profiler] Make `timer_create`-based CPU profiler default (#​7322)
* Revert "[Profiler] Make `timer_create`-based CPU profiler default
(#​7322)" (#​7427)

### Debugger
* Disable debugger initialization if it's not enabled initially (#​7398)

### Serverless
* [Azure Functions] Remove all Serverless Mini-Agent (SMA) code (#​7389)

### ASM
* [IAST] Fix NRE in Native IAST ModuleInfo->GetFullName() (#​7404)

### Fixes
* fix: Clean up small C# and C++ build warnings (#​7363)
* chore: update malformed telemetry name (#​7402)
* Get process start info variables safely (#​7423)
* Fix null reference exception in proxy spans (#​7428)

### Build / Test
* [CI] Creates PR Label Based Docker Image (#​7337)
* [Test Package Versions Bump] Updating package versions (#​7315)
* Include the target framework in our `InstrumentationTests` (#​7347)
* Ignore rejit timeout errors in smoke tests and report a metric
(#​7370)
* fix: Make OTLP metrics snapshot testing more stable (#​7374)
* Add final job for blocking merges of PRs (#​7376)
* Fix debug symbol upload in release job (#​7377)
* Fix Windows SSI release (#​7379)
* Fix null ref type warning in Nuke (#​7382)
* Fix creation of label-based artifacts for system tests (#​7385)
* Filter our exit span from Azure Functions tests (#​7391)
* Fix variable generation for `linux-arm64` unit tests (#​7394)
* Add more alpine checks for native library (#​7395)
* [Test Package Versions Bump] Updating package versions (#​7396)
* Fix ASM WAF unit tests (#​7397)
* [SINT-3848] 🔒 Pin GitHub Actions to specific SHA versions for enhanced
security (#​7400)
 ... (truncated)

## 3.24.1

## Summary

- Fixes the SSI artifact publishing, which were not published in 3.24.0

## Changes

### Misc

- Fix Windows SSI release (#​7379)


[Changes since
3.24.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.24.0...v3.24.1)


## 3.24.0

## Summary

- [Tracer] Logs injection for connecting logs with traces is enabled by
default. To disable, set `DD_LOGS_INJECTION=0`
- [Tracer] Add support for latest S3 and MSTest packages
- [AAP] Add resource name to the collected endpoints
- [DSM] Flush DSM stats on Lambda Stop

## Changes

### Tracer
* Refactor the profiling configuration reading (#​7303)
* Minor `IConfigurationSource` clean up (#​7327)
* chore: clean up baggage span tags implementation (#​7335)
* Update default value of DD_LOGS_INJECTION to true (#​7336)
* Fix broken S3 integration (#​7368)

### CI Visibility
* [Test Optimization] Support for MSTest v3.10 (#​7343)

### ASM
* [AAP] Add resource name to the collected endpoints (#​7317)
* [AAP] Add latest supported waf capabilities to RC (#​7332)
* [AAP] Added WAF metrics. Reorganized other metrics to match RFC
(#​7356)
* [AAP] Update WAF ruleset to v1.15.0 (#​7331)

### Debugger
* [Dynamic Instrumentation] DEBUG-3514 Refactor debugger code (#​7304)
* Removes exception throwing during shutdown of dynamic instrumentation
(#​7375)

### Serverless
* DSMS-90: Flush DSM stats on Lambda Stop (#​7054)

### Data Streams Monitoring
* Do not inject DSM legacy headers by default in "default enabled" mode
(#​7351)

### Build / Test
* Update xunit to latest, fix analyzer warnings, and update analyzer
tests (#​7280)
* Send Warm-up request in iisexpress integration tests (#​7321)
* Update CODEOWNERS with SDK capabilities team as owners (#​7328)
* Pre pull aerospike image (#​7333)
* Remove CMake warning: jobserver unavailable: using -j1. Add `+' to
parent make rule. (#​7334)
* Fix typo in `create_draft_release` (#​7338)
* Fix the signing of the fleet installer exe (#​7341)
* Elaborate on Run failed description (#​7344)
* Work around flake in the Couchbase 3 integration tests (#​7357)
* Try to fix flake by using unique keys in StackExchange sample tests
(#​7359)
* Mark the OTLP metrics test as `[Flaky]` (#​7369)
* Fix more flake in the IIS fleet smoke tests (#​7372)
* Don't test Aerospike.Client 8.1.0 on .NET 6 or 7 (#​7349)

 ... (truncated)

## 3.23.0

## Summary

- [Tracer] Baggage tags are automatically added as span tags
- [Tracer] Fix resource-based sampling for ASP.NET Core
- [Test Optimization] Various fixes for commit info and codeowners
- [Test Optimization] Fix crash with Allure.Xunit
- [IAST] Fix potential crash on `ReadOnlySpan<>` `string.Concat()`
methods

## Changes

### Tracer
* feat(baggage): adding baggage to span tags (#​7020)
* Swap disposal ordering of inferred span (#​7293)
* Add `[MethodImpl(MethodImplOptions.NoInlining]` to all our
instrumented APIs in Datadog.Trace.Manual (#​7302)
* Refactor `TraceSampler` to separate building from evaluation (#​7311)
* Avoid generating resource name that will be thrown away if it's not
required (#​7312)
* Fix resource-based sampling for ASP.NET Core (#​7316)

### CI Visibility
* [Test Optimization] Retrieve head commit info (#​7285)
* [Test Optimization] Add codeowners and test source file tag at suite
level (#​7295)
* [Test Optimization] Fix base branch SHA usage (#​7300)
* [Test Optimization] Avoid crashing on Allure.Xunit usage (#​7305)

### ASM
* [AAP] Update WAF to v1.27.0 (#​7330)

### Continuous Profiler
* [Profiler] Use ringbuffer with timer create (#​7066)

### Fixes
* [IAST] Remove troublesome string.Concat overloads with
ReadOnlySpan<char> (#​7318)

### Miscellaneous
* Set default timeout for Trace Exporter to 15s. (#​7252)
* [OTEL] OTLP Metrics Exporter POC (#​7138)
* [Test Package Versions Bump] Updating package versions (#​7279)
* [Profiler] Add vcpkg setup for build (#​7292)
* Ensure file_opened_ is getting updated when rotating (#​7296)
* Bump rejit timeout to 200ms (#​7301)

### Build / Test
* Filter connection header in flaky tests (#​7290)
* Remove global state to try to fix flake (#​7291)
* Improve repeatability & precision of throughput tests on Linux & ARM
(#​7268)
* More fixes for do-not-merge (#​7274)
* Update the Windows test agent to latest (#​7275)
* Fix potential deadlocks in `IisFixture` process code (#​7281)
* [Profiler] Fix and bump timeitsharp (#​7294)
* Fix debug symbol upload in release (#​7297)
 ... (truncated)

## 3.22.0

## Summary

- [Azure Functions] Support for Azure Functions is GA
- [Azure Functions] Optimized support for Azure Functions with the
`Datadog.AzureFunctions` NuGet package
- [TestOptimization] Add support for `pr.number` and additional CI
variables
- [TestOptimization] Add support for `xunit.v3` version 3.x.x
- [Data Streams Monitoring] Initial support for the default experience

## Changes

### Tracer
* Integrations: Disable AWS Kinesis injection when the integration is
disabled (#​7239)
* Refactor `SpanContextInjector` and `SpanContextExtractor` and improve
tests (#​7258)

### CI Visibility
* [TestOptimization] Update the CI Environment Values parser (#​7242)
* Add support for `xunit.v3` v3 (#​7245)
* [Test Optimization] Add pr.number tag to Github provider (#​7262)

### ASM
* [AAP] Update WAF to V1.26 (#​7216)

### Continuous Profiler
* [Profiler] Add ringbuffer (#​7025)

### Debugger
* Reduce log level for `ConcurrentAdaptiveCache` capacity (#​7213)

### Serverless
* [Serverless] Remove "preview" version suffix from
`Datadog.AzureFunctions` (#​7229)
* [Azure Functions] Bump `Datadog.Serverless.Compat` package reference
version (#​7238)
* [Azure Functions] Fixes, refactoring, and clean-up (#​7256)
* [Azure Functions] Ignore additional URLs in outgoing HTTP client
requests (#​7271)
* [Azure Functions] Fix operation name (#​7272)
* [Serverless] add serverless teams as co-owners on additional files
(#​7273)
* [Serverless] GA nuget package `Datadog.AzureFunctions` (#​7283)

### Miscellaneous
* Add documentation on how to perform a major version update (#​7152)
* [IAST] Added compatibility for stable config (#​7164)
* Only enable Schema extraction when DSM explicitly enabled (#​7175)
* remove redundant dependency check for dynamic assemblies (#​7222)
* Bump libdatadog from 19.0.1 to 19.1.0. (#​7232)
* feat: add injection metadata fields to telemetry forwarder (#​7237)
* DSM default state reversal (#​7244)
* chore: add malformed baggage header telemetry (#​7254)
* Fix SSI injection telemetry (#​7288)
* Increase rejit timeout from 100ms to 150ms (#​7289)
* Add agent response handling to native interop (#​7201)
* Prevent and remove double-disposal in `DiscoveryService` and
`RemoteConfigurationManager` (#​7240)
 ... (truncated)

## 3.21.0

## Summary

- [Tracing] Add support for NLog 6.x.x
- [Test Optimization] Improve the CodeOwners parser
- [Data stream Monitoring] Various fixes for Kinesis, SQS, SNS, and
RabbitMQ integrations
- [Serverless] Add preview support for
[Datadog.AzureFunctions](https://www.nuget.org/packages/Datadog.AzureFunctions/3.21.0-preview#readme-body-tab)
NuGet package

## Changes

### Tracer
* Add support for NLog 6.0 (#​7131)
* Show correct `agent_uri` path in startup log for named pipes (#​7199)
* Try removing exceptions from the shutdown path (#​7200)
* Use non-BOM version of `Encoding.UTF8` in Libdatadog interop code
(#​7204)
* feat(libdatadog-logger): integrate libdatadog logging (#​7075)

### CI Visibility
* [Test Optimization] Improve the CodeOwners parser (#​7155)

### ASM
* [AAP] Report ASM RC status to Telemetry Config (#​7141)
* [AAP] Send WAF config errors to Telemetry Logs (#​7142)

### Continuous Profiler
* Don't load the profiler on arm64 (#​7169)
* [Profiler] Remove ssi telemetry (#​7176)
* [Profiler] Protect against thread abort (#​7187)

### Debugger
* [Exception Replay] Groundwork to support Test Optimization (#​7085)
* [Dynamic Instrumentaiton] Marking instrumentation as failure if
IsReEntryField is absent (#​7188)
* [Dynamic Instrumentation] Reducing noisy log lines (#​7198)

### Serverless
* Add new `Datadog.AzureFunctions` nuget package (#​7111)
* [Serverless] Update nuget package reference (#​7203)
* Add support for writing managed logs to the console (stdout) (#​7160)

### Fixes
* fix: Handle both SQS StringValue and SNS BinaryValue in context
extraction (#​7205)

### Build / Test
* [Profiler] Fix flacky tests (#​7161)
* Adding Throughput Test for Kafka & DSM (#​7133)
* ServiceBus.Minimal.Rebus SQL connection error (#​7146)
* [Test Optimization] Remove impacted tests backend tests (#​7151)
* [Test Package Versions Bump] Updating package versions (#​7156)
* Fix test InitializesTracerWhenTracingIsDisabled Flakiness (#​7163)
* Bump the gh-actions-packages group across 2 directories with 3 updates
(#​7166)
* Add retry to smoke crash tracking tests (#​7172)
 ... (truncated)

## 3.20.1

## Summary

Ensures we never load the Continuous Profiler on linux arm64, as it's
unsupported. Loading an unloading the Continuous Profiler can trigger
crash conditions on some old versions of glibc.

## Changes

### Continuous Profiler
* Don't load the profiler on arm64 (#​7169)

### Miscellaneous
* [fleet installer] Remove the global instrumentation commands (#​7182)

### Build / Test
* Fix release process by removing check for SSI artifacts (#​7180)
* Add workaround for messed up execution_benchmark results (#​7181)

[Changes since
3.20.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.20.0...v3.20.1)


## 3.20.0

> [!WARNING]
> Some old versions of glibc can trigger crash scenarios in version
3.20.0 of the tracer when running on Linux arm64, particularly when
using ASM. We recommend updating to 3.20.1 or newer.

## Summary

- Fix AWS S3 DeleteBucket integration (#​7118)
- Fix protobuf instrumentation error on versions < 3.13 (before Aug 14
2020) (#​7108)
- [Tracer] Capturing GraphQL Errors With SpanEvents (#​6899)
- Avoid using AsyncManualResetEvent in DSM stats processing (#​7027)
- Add fix for race condition in `InitResult` (#​7121)

## Changes

### Tracer
* Avoid using AsyncManualResetEvent in DSM stats processing (#​7027)
* Fix AWS S3 DeleteBucket integration (#​7118)
* Update service discovery check (#​7122)
* Improve CharSlice allocations (#​7127)
* Disable data pipeline if libdatadog is not available (#​7128)
* use manual instead of unknown (#​7143)
* Check for incorrect values in Manual assembly (#​7144)
* Don't write native loader logs when bailing out in Windows SSI
(#​7147)

### ASM
* [AAP][ApiSec] Add response body parse switch in API Security (#​7095)
* Add fix for race condition in `InitResult` (#​7121)

### Fixes
* [AAP] Reduce waf config diagnostics log levels (#​7094)
* Fix log4net tests to account for new process span to check for Android
(#​7104)
* Fix protobuf instrumentation error on versions < 3.13 (before Aug 14
2020) (#​7108)
* Create a `StringUtil` helper for correct nullable annotations on
`string.IsNullOrEmpty` (#​7119)
* Silently ignore empty user ids. (#​7150)

### Miscellaneous
* [Tracer] Capturing GraphQL Errors With SpanEvents (#​6899)
* [Test Optimization] Remove impacted tests backend implementation
(#​6901)
* Fix null reference exception (#​7077)
* [Test Package Versions Bump] Updating package versions (#​7090)
* Update libdatadog to v19.0.0 (#​7105)
* Add global tracing command to FleetInstaller.exe (#​7110)
* Avoid `dlclose` on glibc 2.34-2.36 (#​7125)
* [Test Package Versions Bump] Updating package versions (#​7126)
* Update .gitlab/one-pipeline.locked.yaml (#​7129)
* Update libdatadog to v19.0.1 (#​7139)
* [Docs] Fix Readme BuildAndRunOsxIntegrationTests sample (#​7148)

### Build / Test
* Grpc legacy flaky test (#​7096)
* Do not save system-tests/agent image (#​7106)
 ... (truncated)

## 3.19.0

## Summary

- Fix recursive visibility error in duck typing (#​7087)
- Fix NullReferenceException in Rabbit. (#​7083)
- Fix exception when closing a `Span` with null `ServiceName` (#​6748)
- [Test Optimization] Improve git commands (#​7050)
- [Profiler] Enable GC CPU consumption and thread lifetime features
(#​7045)
- [Dynamic Instrumentation] DEBUG-4063 Add WCF support for dynamic span
tags (#​7097)-

## Changes

### Tracer
* [Tracer] Add sampling tags during serialization (#​5360)
* [tracer] fix exception when closing a `Span` with null `ServiceName`
(#​6748)
* chore(telemetry): track whether tracing was enabled via ssi (#​6938)
* Fix `ErrorSkipTelemetry` by changing primary file logger to sub-logger
config (#​7049)
* chore: disable data pipeline by default (#​7055)
* fix(trace-exporter): add error handling when releasing handles in
ErrorHandle, TraceExporter, and TraceExporterConfiguration (#​7061)
* Fix recursive visibility error in duck typing (#​7087)
* [Dynamic Instrumentation] DEBUG-4063 Add WCF support for dynamic span
tags (#​7097)

### CI Visibility
* [Test Optimization] Improve git commands (#​7050)

### ASM
* Fix IAST DDBB flaky unit tests (#​6958)
* [AAP] Update waf version to v1.25.1 (#​7079)

### Continuous Profiler
* [Profiler] Add DD_PROFILING_HTTP_ENABLED env var configuration
(#​6993)
* [Profiler] Enable GC CPU consumption and thread lifetime features
(#​7045)

### Debugger
* [Dynamic Instrumentation] DEBUG-3961 Enable SymDB by default (#​7012)

### Fixes
* Update list of processes excluded from instrumentation (#​6599)
* fix(trace-exporter): use universal osx binaries for libdatadog
(#​7058)

### Miscellaneous
* feat(trace-exporter): setup boilerplate for data-pipeline integration
(#​6314)
* [Test Package Versions Bump] Updating package versions (#​6988)
* [Tracer] Service discovery integration (#​7014)
* Delete empty commontags interface (#​7060)
* Set `DD_TRACING_ENABLED=tracing` for IIS based SSI (#​7068)
* [Test Optimization] Add support for MSTest 3.9.x (#​7070)
* Don't fail the IIS instrumentation installation if IIS is not
available (#​7071)
* Refactoring to support DSM default state (#​7082)
* Fix NullReferenceException in Rabbit. (#​7083)
* Fix error in DefaultModelBindingContext (#​7086)
 ... (truncated)

## 3.18.0

## Summary

* Add support for async Oracle DB commands
* Add support for Microsoft.Extensions.Telemetry v9.5.0
* Various bug fixes

## Changes

### Tracer
* Differentiate between error states in logs (#​7030)

### ASM
* [AAP] Update waf value obfuscation default regex value (#​7004)
* [AAP] Update waf to v1.25.0 (#​7005)

### Fixes
* Ensure that there is an ActiveScope for AWS SDK Http integration
(#​7013)
* Fix Microsoft.Extensions.Telemetry logging integration for 9.5.0
(#​6989)
* Fix a `NullReferenceException` in AWS SDK
`RuntimePipelineInvokeAsyncIntegration` (#​7019)
* fix: enable retries on failure due to script error (#​7022)
* Fix support for async Oracle DB commands (#​7034)
* [Code Origin] DEBUG-3935 Fix type handle mismatch when resolving
attribute type (#​6994)

### Miscellaneous
* Add `net8.0` and `net9.0` to trimming nuspec (#​6983)
* Add `ILogger.ErrorSkipTelemetry()` to exclude certain logs from
telemetry (#​7028)

### Build / Test
* Update Microsoft.Azure.Functions.Worker.Sdk to 2.0.3 (#​6996)
* Pre-install the .NET SDK in Windows CI runners (#​7001)
* Fix timeout exception (#​7007)
* Add timeouts and retries to `LiveDebuggerTests` when debugger is
disabled (#​7010)
* Allow specifying `SampleName` filter and comprehensive version testing
(#​7015)
* Revert "Benchmarks: Update microbenchmarks to customize
BenchmarkDotNet command line arguments" (#​7016)
* Update Microsoft.Azure.Functions.Worker.Sdk to 2.0.4 (#​7018)
* Replace DownloadPipelineArtifact by a pipeline step (#​7021)
* Skip flaky debugger tests on x86 (#​7023)
* Streamline release process by not explicitly creating a tag in
`create_draft_release.yml` (#​7024)
* Mark a couple of tests as flaky (#​7026)


[Changes since
3.17.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.17.0...v3.18.0)


## 3.17.0

## Summary

* [Tracer] Add support for AWS SDK v4.0
* [Tracer] Fix resource-based sampling for ASP.NET spans in IIS
* [Tracer] Automatically disable Kafka header injection for unsupported
brokers
* [Test Optimization] Fixes for Impacted Tests and Attempt To Fix
* [ASM/IAST] Improve sampling behaviour for vulnerability detection and
schema extraction

## Changes

### Tracer
* Add support for AWS SDK v4.0 (#​6929)
* [Tracer] Fix resource-based sampling for `ASP.NET` spans in IIS
(#​6936)
* Fix: change `cmd.component` to `component` for process spans (#​6969)

### CI Visibility
* [Test Optimization] Add missing provider's environment variables.
(#​6956)
* [Test Optimization] Attempt to fix from v2 to v4 (#​6963)
* [dd-trace] Improved GAC commands (#​6995)
* Fix exit code from `GacUninstallCommand` when the assembly is not in
the GAC (#​7003)

### ASM
* [ASM] Disabled sampling in API Sec schema extractor in Standalone mode
(#​6957)
* [IAST] New sampling mechanism (#​6971)

### Continuous Profiler
* [Profiler] Provide exact minor.build version information for .NET
Framework applications (#​6974)
* [Profiler] Refactor sample transformation (#​6975)

### Dynamic Instrumentation
* [Dynamic Instrumentation] DEBUG-3796 Fix rate limiting for probes that
don't have limit (#​6921)

### Fixes
* Protect against null ref in W3CTraceContextPropagator.cs (#​6991)
* Add tests for manual injection/extraction and guard invalid
implementations (#​6998)
* Disable Kafka header injection when brokers return unknown error
(#​6945)

### Build / Test
* Fix Debugger Windows integration tests not running (#​6754)
* Remove throughput tests (#​6790)
* Speed up Serilog, Grpc, and RabbitMq tests (#​6894)
* Remove Benchmark stages (#​6895)
* Remove `isBenchmarksOnlyBuild` from the pipeline (#​6897)
* Remove `package_linux` as a dependency of `integration_tests_linux`
(#​6911)
* Avoid SystemDataSqlClientTests flaky tests (#​6912)
* Delete pipeline monitor (#​6913)
* Bump the gh-actions-packages group across 3 directories with 10
updates (#​6915)
* Remove deprecated field in `datadog-static-analyzer-github-action`
(#​6916)
* [Test Package Versions Bump] Updating package versions (#​6917)
* Update test projects and samples to target .NET Framework 4.8 (#​6922)
 ... (truncated)

## 3.16.0

## Summary

- [IAST] Add support for .NET 9 `ReadOnlySpan<T>` overloads for `string`
manipulation
- [IAST] Change cookie filter default value to avoid flooding
- [Continuous Profiler] Add WaitHandle wait duration profiling
- [Continuous Profiler] Fix possible shut down crash scenarios
- [Exception Replay] Added support for top-most failing local root span

## Changes

### Tracer
* [Tracer] update sampling formula (#​6866)

### ASM
* [ASM] Removed unneeded rewrite PInvoke call for ASM (#​6914)
* [IAST] Add support for Dotnet 9 ReadOnlySpan String overloads (#​6846)
* [IAST] Change cookie filter default value (#​6889)
* [IAST] Iast Aspects logs refactor (#​6888)

### Continuous Profiler
* [Profiler] Implement WaitHandle wait duration profiling (#​6426)
* [Profiler] Bump libdatadog to v17.0.0 (#​6805)
* [Profiler] Fix timer_create bug (#​6811)
* [Profiler] Fix short lived threads scenario (#​6864)
* [Profiler] Fix missing http profiler in profiler_list tag (#​6865)
* [Profiler] Remove logs in buggybits if needed (#​6898)
* [Profiler] Fix IpcServer for .NET Framework (#​6903)
* [Tracer] Fix possible crash in ContextTracker on shutdown (#​6893)

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

### Fixes
* Remove not required samples (#​6862)

### Miscellaneous
* Add readme for MacOS development (#​6018)
* Add documentation around Xunit.Combinatorial (#​6880)
* [Dynamic Instrumentation] DEBUG-3492 Remove duration from non method
snapshots (#​6735)
* Revert "[Dynamic Instrumentation] DEBUG-3492 Remove duration from non…
(#​6902)

### Build / Test
* Bump Microsoft.Azure.Functions.Worker.Extensions.Http from 3.2.0 to
3.3.0 in
/tracer/test/test-applications/azure-functions/Samples.AzureFunctions.V4Isolated
(#​6605)
* Add `Xunit.Combinatorial` for Combinatorial/Pairwise testing (#​6847)
* Add traits to exclude tests that will not run anyway (#​6858)
* Fix build warnings in debugger and ASM samples (#​6867)
* [Test Package Versions Bump] Updating package versions (#​6874)
* Expand ownership of Version Bump related files (#​6877)
* Add "all-green" job to enfore green CI policy (#​6879)
* [CI] Use public symbol org API KEY (#​6881)
 ... (truncated)

## 3.15.0

## Summary

- Add an inferred span to represent AWS API Gateway
(https://github.com/DataDog/dd-trace-dotnet/pull/6624)
- Add V2 of the Event Tracking SDK for ASM
(https://github.com/DataDog/dd-trace-dotnet/pull/6760)
- Add support for Datadog SpanEvents
(https://github.com/DataDog/dd-trace-dotnet/pull/6769)
- Add support for DynamoDB Span Pointers for Update Item and Delete Item
(https://github.com/DataDog/dd-trace-dotnet/pull/6775)
- Collect detected endpoints in Kestrel for API Security
(https://github.com/DataDog/dd-trace-dotnet/pull/6733)
- Add `code.origin` for entry spans in Dynamic Instrumentation
- Restore Google.Protobuf instrumentation
(https://github.com/DataDog/dd-trace-dotnet/pull/6826)
- Fix edge case with loading instrumentations
(https://github.com/DataDog/dd-trace-dotnet/pull/6815)
- Disable instrumentations when an integration throws a
`MissingMethodException`
(https://github.com/DataDog/dd-trace-dotnet/pull/6807)

## Changes


[Changes since
3.14.3](https://github.com/DataDog/dd-trace-dotnet/compare/v3.14.3...v3.15.0)


## 3.14.3

## Summary

Updates for initial Windows IIS OCI image preview release

## Changes

### Miscellaneous

- Update .gitlab/one-pipeline.locked.yaml (#​6818)

[Changes since
3.14.2](https://github.com/DataDog/dd-trace-dotnet/compare/v3.14.2...v3.14.3)


## 3.14.2

## Summary

Updates for initial Windows IIS OCI image preview release

## Changes

### Miscellaneous

* Update initial Windows IIS OCI image preview release

[Changes since
3.14.1](https://github.com/DataDog/dd-trace-dotnet/compare/v3.14.1...v3.14.2)


## 3.14.1

## Summary

Initial preview release of Windows IIS OCI images

## Changes

### Misc
* Initial Windows IIS OCI image preview release


[Changes since
3.14.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.14.0...v3.14.1)


## 3.14.0

## Summary

* [Database Monitoring] Propagate context for some stored procedures

## Changes

### Misc
* [Database Monitoring] Propagate context for some stored procedures
(#​6799)

### Build / Test
* [R&D Week Profiling] Add tests for sync over async scenarios (#​6763)
* Download and Copy libdatadog binaries for Data-Pipeline integration
(#​6777)


[Changes since
3.13.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.13.0...v3.14.0)


## 3.13.0

## Summary

- Fix RabbitMQ V7+ headers being overwritten (thanks @​johang88)!
- Update the default value of `DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED`
to `true`
- Fix `Microsoft.Extensions.Telemetry` logging integration in `9.3.0`
- [Test Optimization] Flaky Test Management feature 
- Temporarily remove instrumentation for Protobuf Schema tagging

## Changes

### Tracer
* [Tracing] Update the default value of
DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED to true (#​6751)
* [Tracer] Fix Rabbitmq7 header injection overwrites user supplied basic
properties [from external PR #​6730] (#​6753)
* Fix Microsoft.Extensions.Telemetry logging integration in 9.3.0
(#​6773)
* Refactor RabbitMQ test sample (#​6778)
* Clarify doc comment for DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED
(#​6791)
* fix: container ID prefix in metadata and related tests (#​6793)

### CI Visibility
* [Test Optimization] Flaky Test Management feature (#​6740)
* [Test Optimization] Add missing `test_session` metric (#​6776)

### ASM
* [ASM] Fix IAST Grpc DotNet flaky test (#​6772)

### Continuous Profiler
* [Profiler] Change profiler to use the libdatadog dynamic library
instead (#​6301)

### Debugger
* Skip the failing debugger tests (#​6755)

### Serverless
* Add AWS Lamda testing for .NET 9 (#​6779)

### Fixes
* [BUG]: RabbitMQ Basic Properties overwritten to default values
(#​6723)
* Fix: Rabbitmq7 header injection overwrites user supplied basic
properties (#​6730)
* Remove instrumentation for Protobuf Schema tagging (#​6792)

### Build / Test
* Fix dependabot configuration for gh-actions-packages group (#​6696)
* [IAST] LDAP flakiness fix (#​6706)
* [fleet installer] Add some integration tests (#​6714)
* [Test Package Versions Bump] Updating package versions (#​6732)
* [CI] Stop running windows throughput tests (#​6752)
* Remove profiler throughput tests and bump timeouts (#​6757)
* feat: add dev container for consistent development environment
(#​6761)
* [Benchmarks] Migrate linux throughput tests (#​6765)
* ssi tests onepipeline (#​6767)
* Remove graphql scenarios from CI system tests (#​6768)
 ... (truncated)

## 3.12.0

## Summary

* Fix `NoWarn` overriding in Datadog.Trace and Datadog.Trace.Trimming
NuGet packages
* [Tracer] Add support for S3 tracing using span links
* [Test Optimization] Add support to xUnit v3 2.x.x
* [ASM] Add support for standalone billing 
* [ASM] Add support for email injection detection in MimeKit and
SimpleEmail
* [Continuous Profiler] Enable ETW support by default for .NET Framework

## Changes

### Tracer
* Adding datadog.json filepath to tracer startup logs  (#​6307)
* [tracing] add null checks when iterating headers in propagators
(#​6460)
* S3 Span Pointers (#​6655)
* don't propagate baggage when http client integration is disabled
(#​6692)
* Fix: Ensure baggage properties are not interpreted as baggage values
(#​6693)
* HTTP over streams: use vendored `Utf8Parser.TryParse()` (#​6720)
* [Tracing] Add configuration key DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED
(#​6727)
* [Tracing] Update DD_TAGS behavior through a feature flag to better
align with Datadog Agent tags parsing logic (#​6728)
* Ignore entire `baggage` header if malformed (#​6743)


### CI Visibility
* [Test Optimization] - Code refactor (#​6709)
* [Test Optimization] Add missing impacted test code in runner (#​6722)
* [Test Optimization] Add known tests feature (#​6725)
* [Test Optimization] Add support to xUnit v3 2.0.0 (#​6738)

### ASM
* [ASM] Standalone billing V2 migration (#​6663)
* [ASM] Dont store additive context in httpcontext (#​6609)
* [ASM] Email injection: MimeKit and SimpleEmail (#​6614)
* [ASM] Add new RASP telemetry tags (#​6685)
* [ASM][ATO]Add business logic event address to the waf (#​6701)
* [ASM] Add new WAF events success telemetry tags. (#​6707)
* [ASM] WAF error span tags (#​6729)
* [ASM][ATO] Fix : remove ISession for trimming file, and ducktype
(#​6737)

### Continuous Profiler
* [Profiler] Properly initialize appDomainId (#​6630)
* [Profiler] Add Export project in Demo for datadog-ci tests (#​6708)
* [Profiler] Enable ETW support by default for .NET Framework (#​6724)
* [Profiler] Add logs for the different profilers configuration (#​6739)
* [Profiler] Add tag GC CPU samples (#​6746)

### Dynamic Instrumentation
* [Dynamic Instrumentation] DEBUG-3572 Check for valid gzip content
(#​6687)

### Serverless
 ... (truncated)

## 3.11.1

## Summary

There are no changes in version 3.11.1 compared to 3.11.0, 3.11.1 is to
unblock an issue with SSI artifacts.

The release notes for 3.11.0 are shown below for convenience

- [Tracer] Add support for HotChocolate v15.x.x
- [Tracer] Add trimming support to Datadog.Trace, instead of requireing
Datadog.Trace.Trimming
- [Tracer] Add support 128-bit trace ids in logs injection 
- [Tracer] Add ability to disable `ActivitySource`s from being listened
to
- [Test Optimization] Add support for MSTest v3.8.x
- [Serverless] Add support for AWS SDK Step Functions
- [Continuous Profiler] Include CPU samples in profile
- [ASM] Always collect session ID
- [Data streams management] Add profobuf schema as OpenAPI json as tags

## Changes

### Tracer
* [Tracer] support 128-bit trace ids in logs injection (#​5363)
* Add ability to disable `ActivitySource`s from being listened to
(#​5795)
* [Dynamic Instrumentation] DEBUG-3132 Add Memoization Cache for
Redaction Logic (#​6292)
* Fix W3CTraceContextPropagator for non-standard array types (#​6654)
* Remove unused method (#​6659)
* Fix `DisabledIntegrationNames` not correctly disabling the integration
(#​6664)
* Pack trimming file in Datadog.Trace NuGet, and add trimming smoke
tests for the NuGet packages (#​6678)
* only enable protobuf instrumentation when DSM is enabled (#​6691)
* Add support for HotChocolate v15.x.x (#​6648)

### CI Visibility
* [Test Optimization] Support for MSTest v3.8.x (#​6686)

### ASM
* [ASM][ATO] Collect session id at all times (#​6623)

### Continuous Profiler
* [Profiler/Crashtracker] Bump libdatadog 16.0.3 (#​6589)
* [Profiler] Add number of CPU samples to the profile (#​6646)
* [Profiler] Fix Profiler execution benchmark tests (#​6652)

### Serverless
* [SVLS-5559] Inject trace context into AWS Step Functions input
attribute (#​6171)
* fix: dispose HttpWebResponses to avoid leaking FDs (#​6661)

### Build / Test
* [CI] Sending CI Vis Data to HQ (#​6621)
* Build the FleetInstaller executable and include in Windows OCI image
(#​6644)
* Add smoke tests for fleet installer (#​6645)
* Tack on apm-idm-dotnet reviewers to auto-bump PRs (#​6665)
* Make sure we upload hotfix artifacts to Azure (#​6667)
 ... (truncated)

## 3.11.0

## Summary

- [Tracer] Add support for HotChocolate v15.x.x
- [Tracer] Add trimming support to Datadog.Trace, instead of requireing
Datadog.Trace.Trimming
- [Tracer] Add support 128-bit trace ids in logs injection 
- [Tracer] Add ability to disable `ActivitySource`s from being listened
to
- [Test Optimization] Add support for MSTest v3.8.x
- [Serverless] Add support for AWS SDK Step Functions
- [Continuous Profiler] Include CPU samples in profile
- [ASM] Always collect session ID
- [Data streams management] Add profobuf schema as OpenAPI json as tags

## Changes

### Tracer
* [Tracer] support 128-bit trace ids in logs injection (#​5363)
* Add ability to disable `ActivitySource`s from being listened to
(#​5795)
* [Dynamic Instrumentation] DEBUG-3132 Add Memoization Cache for
Redaction Logic (#​6292)
* Fix W3CTraceContextPropagator for non-standard array types (#​6654)
* Remove unused method (#​6659)
* Fix `DisabledIntegrationNames` not correctly disabling the integration
(#​6664)
* Pack trimming file in Datadog.Trace NuGet, and add trimming smoke
tests for the NuGet packages (#​6678)
* only enable protobuf instrumentation when DSM is enabled (#​6691)
* Add support for HotChocolate v15.x.x (#​6648)

### CI Visibility
* [Test Optimization] Support for MSTest v3.8.x (#​6686)

### ASM
* [ASM][ATO] Collect session id at all times (#​6623)

### Continuous Profiler
* [Profiler/Crashtracker] Bump libdatadog 16.0.3 (#​6589)
* [Profiler] Add number of CPU samples to the profile (#​6646)
* [Profiler] Fix Profiler execution benchmark tests (#​6652)

### Serverless
* [SVLS-5559] Inject trace context into AWS Step Functions input
attribute (#​6171)
* fix: dispose HttpWebResponses to avoid leaking FDs (#​6661)

### Build / Test
* [CI] Sending CI Vis Data to HQ (#​6621)
* Build the FleetInstaller executable and include in Windows OCI image
(#​6644)
* Add smoke tests for fleet installer (#​6645)
* Tack on apm-idm-dotnet reviewers to auto-bump PRs (#​6665)
* Make sure we upload hotfix artifacts to Azure (#​6667)
* Restrict dependabot github actions to patch version bumps (#​6669)
* [Test Package Versions Bump] Updating package versions (#​6670)
* Reduce flake in Fleet installer tests (#​6671)
* Minor refactor in `ThreadAbortCodeFixProvider` (#​6673)
 ... (truncated)

## 3.10.2

## Summary

There are no code changes in this release compared to 3.10.1
This release was done to update the latest tagged version of
init-containers to fix a potential application crash issue.


[Changes since
3.10.1](https://github.com/DataDog/dd-trace-dotnet/compare/v3.10.1...v3.10.2)


## 3.10.1

## Summary

[Serverless] Resolve issue with sockets staying open too long in AWS
Lambda integration.

## Changes

### Tracer
* clean up http connections in AWS Lambda integration (#​6661)

[Changes since
3.10.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.10.0...v3.10.1)


## 3.10.0

## Summary

- [Tracing] Add S3 instrumentation and support for
Microsoft.Data.SqlClient 6.x.x
- [Tracing] Add `DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT` to control trace
continuation from incoming headers
- [CI Visibility] Add Xunit.v3 support
- [CI Visibility] Initial Impacted Tests support
- [ASM] Enable user id collection on authenticated requests
- [ASM] Fix blocking Redirect requests with invalid status code
- [Continuous Profiler] Implement outgoing HTTP requests profiling
- [Dynamic Instrumentation] Various bug fixes and improvements

## Changes

### Tracer
* [Tracing] Add s3 instrumentation (#​6590)
* [Tracing] Add configuration to change the trace context propagation
extract behavior (APMAPI-1009) (#​6320)
* Remove Security and IAST statics in `AspNetCoreDiagnosticObserver`
(#​6564)
* cleaning pass on HotChocolate instrumentation (#​6580)
* Add support for Microsoft.Data.SqlClient 6.x.x (#​6638)
* Call `HttpRequest.BuildUrl` to avoid URL caching (#​6361)
* Add Google Protobuf Instrumentation (#​6166)
* Revert "Add Google Protobuf Instrumentation (#​6166)" (#​6642)

### CI Visibility
* [CI Visibility] Add Xunit.v3 support (#​6573)
* [CI Visibility] Impacted Tests Reference Implementation (#​6559)
* [CI Visibility] Fix detached head situation (#​6594)
* [CI Visibility] Disable ImpactedTests flaky test (#​6616)

### ASM
* [ASM][ATO] user id collection on authenticated request (#​6431)
* [ASM] Fix set status error in .Net framework (#​6587)
* Change the way we collect ip and header (#​6591)
* [ASM] Fix errors exceptions on HttpContext get_Items (#​6592)
* [ASM] [IAST] Enable email injection unit tests (#​6595)
* [ASM] Fix NullReferenceException on HttpTransport get_StatusCode
(#​6602)
* [ASM][ATO] user id from sdk overwrite user login tags (#​6603)
* [ASM] Avoid null context repetitive log messages (#​6607)
* [ASM] Fix Blocking Redirect Invalid Status Code (#​6619)
* [IAST] Security Controls (#​6635)
* [IAST] Add IAST package exclusions (#​6610)

### Continuous Profiler
* [Profiler] Implement outgoing HTTP requests profiling (#​6280)
* [Profiler] Fix Windows 64 bit stack walking (#​6583)
* [Profiler] Fix null check in GetMachineBootTime (#​6628)

### Debugger
* [dynamic Instrumentation] DEBUG-2336 Add Concurrent Adaptive Cache
(#​6093)
* [Exception Replay] Fixed capturing issue of async methods with `await`
in finally block + added missing snapshot attributes + better frame
matching algorithm (#​6549)
 ... (truncated)

## 3.9.1

## Summary

- [Tracing/Serverless] Fix an issue in AWS Lambda layer where tracing
failed in .NET 6 when using Ready2Run
- [Continuous Profiler] Fix bug in stack walking on Windows

## Changes

### Continuous Profiler
* [Profiler] Fix Windows 64 bit stack walking (#​6583)

### Fixes
* Track internal rewrites and discard NGEN images (#​6588)
* Refactor the NGEN tracking fix to be more performant (#​6598)

### Build / Test
* Skip non-linux OCI package creation (#​6586)


[Changes since
3.9.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.9.0...v3.9.1)


## 3.9.0

## Summary

* [Tracer] Add support for Azure Functions SDK v2 and ASP.NET Core
Integration
* [Tracer] Add support for RabbitMQ v7
* [Tracer] Add support for OpenTelemetry's DefaultTextMapPropagator when
used without the SDK
* [Tracer] Fix container tagging for Alpine containers
* [ASM] Various bug fixes and reliability improvements

## Changes

### Tracer
* Add support for Microsoft.Azure.Functions.Worker.Core v2 (#​6472)
* Add support for RabbitMQ v7 (#​6479)
* Add CallTarget support for `ValueTask` in .NET FX and < .NET Core 3.1
(#​6480)
* Fix container tagging for Alpine containers (#​6505)
* Move SpanContextPropagator to TracerManager (#​6511)
* Fix Isolated Azure Functions performance when using `ASP.NET Core`
Integration (#​6567)
* [Tracing] Provide default implementation for
OpenTelemetry.Context.Propagation.Propagators.DefaultTextMapPropagator
[AIDM-504] (#​6544)

### CI Visibility
* [CI Visibility] Add missing telemetry metrics (#​6443)
* Add additional tests for CI Visibility configuration behaviour
(#​6513)
* Wait for background task in ConfigureCiCommand (#​6535)
* [CI Visibility] Improve Git commands execution (#​6545)

### ASM
* [ASM] Fix WebApi blocking on Response (#​6488)
* [ASM] Fix access violation exception when reading WAF addresses
(#​6510)
* [ASM] Context disposed related exceptions when calling the WAF
(#​6529)
* [ASM] Add a lock to handle WAF active addresses (#​6566)
* [ASM] Catch HttpException when reading the request body in .net461
(#​6459)
* [IAST] Lock vulnerabilities list access (#​6531)
* [IAST] Added IAST instrumentation category to ado net Reader
integrations (#​6523)

### Continuous Profiler
* [Profiler] Make `timer_create`-based CPU profiler default (#​6315)
* [Profiler] Cleanup repository (#​6547)
* Revert "[Profiler] Make `timer_create`-based CPU profiler default"
(#​6579)

### Debugger
* Fix pinned locals parsing + bump dotnet version for protobuf and
eShopOnWeb exploration tests (#​6475)
* [Debugger] Don't redact config/address tokens (#​6552)
* [Debugger] Don't redact env tokens from probe snapshots (#​6553)
* [Dynamic Instrumentation] DEBUG-3223 SymDB compression fix (#​6556)
* [Dynamic Instrumentation] Change the way we are using the gzip stream
in SymDB (#​6562)

### Serverless
* Run Azure Functions integration tests on .NET 8 and .NET 9 (#​6517)
* [serverless] Upload serverless assets to Azure so we can release for a
layer (#​6561)

 ... (truncated)

## 3.8.0

## Summary

- [ASM] Improved error handling and reporting
- [ASM/IAST] Fix a crash occurring when an attribute is decorated with
itself
- [Dynamic Instrumentation] Fix errors in symbol upload and exception
replay
- [AWS Lambda] Encode non-ascii error messages

## Changes

### Tracer
* [Tracing] Refactor internal Span Links API (#​6341)
* Support relative path in `DD_DOTNET_TRACER_HOME` (#​6434)
* Add support for `[DuckPropertyOrField]` (#​6463)

### ASM
* [ASM] Log `FormatException` from `get_Uri` as debug (#​6489)
* [ASM] Update Iast Log Warning to Error (#​6492)
* [ASM] upgrade warning to error (#​6421)
* [ASM] Fix IAST benchmark tests (#​6462)
* [ASM] Error metric for unknown operator errors (#​6465)
* [ASM] Introduce SecurityReporter for all reporting functions of
SecurityCoordinator (#​6481)
* [ASM] Normalise aspects exception logging (#​6495)
* Fix build issues on aspects on net5.0 (#​6500)

### Debugger
* [Dynamic Instrumentation] Hotfix SymDB and ER (#​6468)

### Serverless
* [serverless] encode lambda error.msg and error.type (#​6438)

### Fixes
* [IAST] Fix recursive custom attribute crash (#​6470)

### Build / Test
* [IAST] Skip failing tests (#​6455)
* repo: mandatory issue templates (AIDM-424) (#​6456)
* K8s Lib Injection tests: run on a matrix (#​6458)
* [Build] Fix version bump autogen files error (#​6464)
* Fix the build and some versions (#​6466)
* [IAST] skip dotnet 2.1 tests that can't work (#​6467)
* Exclude common failure in smoke tests (#​6469)
* allow running exploration tests on mac (#​6474)
* [Test Package Versions Bump] Updating package versions (#​6450)
* [Test Package Versions Bump] Updating package versions (#​6478)
* [Test Package Versions Bump] Updating package versions (#​6486)
* Parallelize unit tests (#​6483)
* [IAST] Propagation tests reorg (#​6487)
* fix UpdateVendoredCode on mac (#​6490)

### Miscellaneous
 ... (truncated)

## 3.7.0

## Summary

* [IAST] Extend stored XSS to cover more databases
* [IAST] Support of DefaultInterpolatedStringHandler
* [Tracer] Add support for HotChocolate 14.x.x, GraphQL.NET 8.x.x,
Aerospile.Client 8.x.x, MongoDB 3.0.0, and NpgSQL 9.x.x
* [Tracer] Fix runtime-metrics thread count
* [CI Visibility] Improve support for MSTest

## Changes

### Tracer
* Add Support for GraphQL HotChocolate v14 (#​6248)
* Add support for Graph.NET v8 (#​6423)
* Add support for `Aerospike.Client` v8 (#​6424)
* Add support for mongodb v3 (#​6354)
* Update npgsql to support 9.x.x (#​6350)
* Filter out dead threads in runtime metrics (#​6298)
* Fix bug in manual instrumentation (#​6330)
* Bail out if we're in a no-dynamic-code scenario (#​6362)
* Remove settings snapshot generator (#​6370)
* Ducktype instance type check (#​6373)
* Remove old generated public APIs (#​6376)
* Add try catch on shutdown (#​6378)
* Simplify duplication in `IConfigurationSource`  (#​6386)
* Make more integration settings case insensitive (#​6393)
* Update config-in-code manual instrumentation to use an
`IConfigurationSource` (#​6397)
* Remove the vendored arraypool eventsource (#​6398)
* Make `DirectLogSubmissionSettings` properly immutable and remove
`ImmutableDirectLogSubmissionSettings` (#​6400)
* Make `IntegrationSettings` properly immutable and remove
`ImmutableIntegrationSettings` (#​6405)
* Make `ExporterSettings` properly immutable and remove
`ImmutableExporterSettings` (#​6408)
* Validate data before EnumNgenModuleMethodsInliningThisMethod call
(#​6410)
* Make `TracerSettings` properly immutable and remove
`ImmutableTracerSettings` (#​6415)
* [Tracer] Fix git metadata retrieval (#​6444)
* [dd-dotnet] Catch error when failing to read env vars on IIS (#​6430)

### CI Visibility
* [CI Visibility] Fix MSTest integrarion bug (#​6336)
* [CI Visibility] Specify if the user is setting the DD_SERVICE (#​6348)
* [CI Visibility] Adding nullability checks (#​6374)
* [CI Visibility] Use same number of execution in EFD tests (#​6416)
* [CI Visibility] Set `TracerSettings` using a configuration source
instead of mutating (#​6399)

### ASM
* [ASM] Native CallTarget definitions (#​6252)
* [APM] Exclude windows only definitions from non windows dlls (#​6270)
* [ASM] IAST events in span's `meta_struct` (#​5803)
* [ASM][ATO] Collect request headers on login user events (failures and
success) (#​6225)
* [ASM] Update WAF v1.21.0 Ruleset 1.13.3 (#​6287)
* [ASM] Restore IAST unit tests (#​6294)
* [ASM][ATO] Adapt v3 new login tags and fix signup tags (#​6302)
 ... (truncated)

## 3.6.1

## Summary

* [Profiler] Fix a crash scenario on windows
* [CI Visibility] Catch crash when intelligent test runner upload fails
* [ASM IAST]: Fix for NullReferenceException in Stacktrace Walker

## Changes

### CI Visibility
* [CI Visibility] Catch `UploadRepositoryChanges` exceptions (#​6331)

### ASM
* [ASM] iast: Fix for NullReferenceException in Stacktrace Walker
(#​6326)

### Continuous Profiler
* [Profiler] Fix a crash scenario on windows (#​6328)

### Miscellaneous
* [Crashtracking] Filter the ptrace_create hook (#​6337)

[Changes since
3.6.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.6.0...v3.6.1)


## 3.6.0

## Summary

* Adds support for .NET 9
* Adds DSM support for AWS SNS
* Add support for baggage propagation
*  [CI Visibility] Add support for coverlet.msbuild coverage reporting
* [Dynamic Instrumentation] Collect code origin for exit spans
* [ASM] Fix shutdown bug
* [Continuous Profiler] Fix crash at shutdown

## Changes

### Tracer
* Baggage part 3/3: add public api to `Datadog.Trace.Manual` (#​6190)
* Baggage part 2/3: propagation (#​6158)
* Remove dependency on System.IO.Compression for .NET Framework build
(#​6192)
* Add default value to StringBuilderCache, and use in more places
(#​6232)
* Enable baggage propagator by default (#​6258)
* Add support for `AllowWriteStreamBuffering=false` in `WebRequest` for
.NET 9 (#​6271)
* Add initial support for .NET 9 (#​6265)
* Ensure that we never run any call target instrumentations in partial
trust (#​6290)

### CI Visibility
* [CI Visibility] Add more checks for the object pack files (#​6256)
* [CI Visibility] GitInfoProvider refactor (#​6259)
* [CI Visibility] Add support for coverlet.msbuild coverage reporting
(#​6284)
* [CI Visibility] Fix GitCommandParser test (#​6289)
* [CI Visibility] Catch some gitinfo exceptions. (#​6297)

### ASM
* [ASM] Avoid HttpRequestValidationException when reading body or
namevalueCollection values (#​6185)
* [ASM] Fix issue with waf disposing while it might concurrently be
updating (#​6250)
* [ASM] Serialize ASM tags and metrics (#​6272)
* [ASM] Fix benchmarks AppSecBodyBenchmarks: have a trace context to
avoid null reference exceptions (#​6274)
* [ASM] IAST: Add web form tests (#​6276)
* [ASM] iast: Fix `Microsoft.Data.Sqlite` database tainting (#​6295)
* [IAST] Minor cleanup in IAST aspects (#​6293)
* [IAST] Updated CallSite IL Dump (#​6240)

### Continuous Profiler
* [Profiler] CPU profiler: Check if the stackwalk lock was not already
taken (#​6198)
* [Profiler] Prevent `StackSamplerLoop` from crashing at shutdown
(#​6238)
* [Profiler] Add metrics for cpu and walltime profilers (#​6267)
* [Profiler] Fix crash at shutdown with the `timer_create`-based CPU
profiler (#​6268)

### Debugger
* [Dynamic Instrumentation] DEBUG-2916 Stabilize the probe processor
(#​6077)
* [Dynamic Instrumentation] DEBUG-3088 Add object pool (#​6105)
* [Dynamic Instrumentation] DEBUG-2913 Fix runtime reflection exceptions
when getting field value (#​6078)
* [Dynamic Instrumentation] DEBUG-2602 Collection expressions fixes
(#​6087)
 ... (truncated)

## 3.5.0

## Summary

- Add support for Ready2Run and NGen behaviour with manual
instrumentation
- Fix for IIS apps using `CustomConfigurationBuilder` with multiple apps
in a pool
- [DBM] Fix DBM bugs (pgssql query plan hints ignored, `DbDataSource`
issues, missing `Transaction` scope)
- [ASM] Only run RASP file operations on read operations
- Fix Remote Configuration values should be 64-bit not 32-bit

## Changes

### Tracer
* Make `DD_TRACE_<INTEGRATION>_ENABLED` Case Insensitive  (#​6175)
* Baggage part 1/3: change propagator signatures (#​6157)

### CI Visibility
* [CI Visibility] Fix errors detected from error tracking. (#​6222)

### ASM
* [ASM] remote configuration refactoring and simplifying updates
(#​6179)
* [ASM] Add rules version to all spans when ASM enabled (#​6188)
* [ASM] Fix possible null reference exception in extracting headers
(#​6211)
* [ASM] Update ruleset to version 1.13.2 (#​6218)
* [ASM] Restrict RASP Lfi operations to read operation only (#​6221)

### Continuous Profiler
* [Profiler] Make LibrariesInfoCache standalone (#​6019)
* [Profiler] Make sure we log only once for DebugInfoStore errors
(#​6187)
* [Profiler] Improve EtwEventsManager cleanup (#​6189)
* [Profiler] Fix bugs in the `timer_create`-based CPU profiler (#​6229)

### Fixes
* Add workaround for ASP.NET ConfigBuilder issue (#​6147)
* Reject method NGEN image if there's a rejit request for that method.
(#​6184)
* Revert "Load the tracer/profiler after guardrails checks" (#​6200)
* [DBM][fix] Do not prepend DBM injected comment when a pg plan hint is
present (#​6204)
* move all RC int values to long, to mirror RC backend (#​6219)
* Fix `InvalidOperationException` in DBM propagation (#​6233)

### Build / Test
* [ASM] Fix TestExternalWafHeaders snapshot netcore 2.1 (#​6202)
* [Test Package Versions Bump] Updating package versions (#​6150)
* Inject startup hook preferentially into static constructor when
available (#​6154)
* add new integrations system tests scenario (#​6177)
* Fix typo in create_draft_release.yml (#​6194)
* Fix using the wrong pool for smoke tests (#​6196)
* Pin Azure Functions version used in CI to get the integration tests
running (#​6203)
* [Test Package Versions Bump] Updating package versions (#​6206)
* Fix some build warnings in sample apps (#​6207)
* Fix IIS LoaderOptimisation tests not testing anything (#​6209)
* Update CosmosDb snapshots (#​6213)
 ... (truncated)

## 3.4.1

## Summary

- Fix a crash when .NET Framework and .NET Core run in the same process,
which can typically happen when using IIS an ".NET CLR Version" is _not_
set to "No Managed Code". May also affect applications running in Azure
App Service.

## Changes

### Fixes
* Revert "Load the tracer/profiler after guardrails checks" (#​6200)

[Changes since
3.4.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.4.0...v3.4.1)

## 3.4.0

> [!WARNING]
> We've identified a bug in version 3.4.0 only that can crash
applications that run .NET Framework and .NET Core in the same process,
which can typically happen when using IIS. Please ensure you update to
3.4.1.
>
> If you're using .NET Core in IIS, make sure to set ".NET CLR Version"
to "No Managed Code" in the application pool settings, [as described in
the Microsoft
documentation](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/advanced?view=aspnetcore-8.0#create-the-iis-site).

## Summary

- [Tracing] Add ability to disable additional ADO.NET Command Types
using `DD_TRACE_DISABLED_ADONET_COMMAND_TYPES`
- [Tracing] Add support for `3.x.x` of log4net 
- [CI Visibility] Automatic Test Retries
- [CI Visibility] Add support for session logical names
- [CI Visibility] Add extra tags for `vcpu_count` and in GitHub Action
pull_requests runs
- [ASM] Enable API Security feature by default
- [ASM] Add support for attacker fingerprinting
- [ASM] Add support for suspicious attacker blocking
- [Continuous Profiler] Fix potential deadlock between watcher and
sampler threads
- [Continuous Profiler] Improve performance for CPU profiler
- [Serverless] Add EventBridge and 128-bit trace ID support
- [DBM] Ensure context injection does not affect DBM injection

## Changes

### Tracer
* [Tracer] Set `_dd.base_service` tag whenever a span's service name is
different than the default value (`DD_SERVICE`) (#​5502)
* Add ability to disable additional `ADO.NET` Command Types (#​6042)
* Add support for `3.*` of `log4net` (#​6075)
* [APMAPI-473] Making `DD_HTTP_*_ERROR_STATUSES` Config Keys Consistent
(#​6095)
* Subscribe to AssemblyLoadContext.Default.Resolving (#​6148)
* Fix return value on error in delegate instrumentation (#​6153)
* Add support for the "new" dev.azure.com style URLs in SourceLink URL
parsing logic (#​6159)
* Include pID in managed logs filename (#​6161)
* Ensure we don't throw a null reference exception in Manual
instrumentation (#​6169)

### CI Visibility
* [CI Visibility] Test session logical names (#​6050)
* [CI Visibility] Add vcpu_count tag to tslv events (#​6055)
* [CI Visibility] Automatic Test Retries (#​6061)
* [CI Visibility] Avoid failing unfinished tests (#​6063)
* [CI Visibility] Add support for MSTest 3.6.0 (#​6080)
* [CI Visibility] Hide running command by default. (#​6086)
* [CI Visibility] Fix code coverage enabled tag behavior (#​6111)
* [CI Visibility] Add extra tags to GitHub Action pull_requests runs
(#​6141)
* [CI Visibility] Ensure commit messages are trimmed (#​6170)

### ASM
* [ASM] Segregate asm and iast contexts functionality (#​6118)
* [ASM] Delete unused snapshots (#​5758)
* [ASM] Attacker fingerprint (#​5982)
* [ASM] Fix exception when accessing ReportedExternalWafsRequestHeaders
(#​6030)
* [ASM] Activate api sec by default (#​6043)
 ... (truncated)

## 3.3.1

## Summary

- Fixes a bug introduced in 3.3.0 in which attempting to run some
commands (e.g. `cat`) in some distros would give the error `symbol
lookup error:
/opt/datadog/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so:
undefined symbol: dlsym`

## Changes

### Continuous Profiler
* Fix dlsym issue (#​6048)

[Changes since
3.3.0](https://github.com/DataDog/dd-trace-dotnet/compare/v3.3.0...v3.3.1)


## 3.3.0

> [!WARNING]
> We've identified a bug with the .NET Tracer with the Continuous
Profiler enabled that may cause applications to crash - please avoid
3.3.0 and instead use 3.2.0 for the time being. We are working on a
hotfix for this ASAP.

## Summary

- [ASM] Fix some minor bugs (#​5943, #​5955, #​6017)
- [ASM] Improvements to stack trace reporting (#​6011, #​5997)
- [Dynamic Instrumentation] Add support for `typeof` expression
- [Continuous Profiler] Add support for heuristic-based activation
(#​5240, #​6002, #​6026)
- [DBM] Full propagation mode for SQL Server (#​5859)

## Changes

### ASM
* [ASM] Avoid unhandled HttpRequestValidationExceptions (#​5943)
* [ASM] Avoid reporting unknown matcher WAF errors (#​5955)
* [ASM] RASP: add telemetry tag for shell injection (#​5993)
* [ASM] Add new capabilities for RC (#​6008)
* [ASM] Change stack trim proportion (#​6011)
* [ASM]Fix InvalidOperationException in httpContext.Items (#​6017)
* [ASM] Capabilities reporting against WAF versions. (#​6028)
* [IAST] Add Stack trace to vuln location (#​5997)
* [IAST] Fix system test weak_cipher system test (#​6034)

### Continuous Profiler
* [Profiler] Support Single Step Instrumentation deployment and
activation (#​5240)
* [Profiler] Contention profiling: add blocking thread name (#​5981)
* [Profiler] Fix duplicated lifecycle telemetry (#​6002)
* [Tool] update continuous profiler diagnostics (#​6014)
* [Profiler] Disable `timer_create`-based CPU profiler when required
(#​6015)
* [Profiler] Send ssi info with profiles (#​6026)

### Debugger
* [Dynamic Instrumentation] DEBUG-2323 Add support for `typeof`
expression in EL (#​5539)

### Build / Test
* [Profiler] Disable SSI telemetry by default (#​6020)
* Fix SSI tests for profiler integration tests (#​6016)
* [Profiler/CI] Disable Profiler Windows ASAN job (#​5987)
* Add explicit permissions to all workflows (#​5728)
* [Test Package Versions Bump] Updating package versions (#​5873)
* [build] Build tracer with ReadyToRun (#​5962)
* Display the crash tests stdout live (#​5964)
* Timeit bump and fixes (#​5971)
* Add `linux-musl-arm64` standalone `dd-trace` to the v3 release
artifacts (#​5974)
* [CONTSEC-1501] Comment the action that uploads SARIF to Datadog
(#​5977)
* Include snapshot diff in snapshot body (#​5988)
* Make sure we run all the TFMs on master builds (#​5990)
* Minor CI fixes (#​6000)
* Fix installer tests (#​5994 => main) (#​6004)
 ... (truncated)

## 3.2.0

## Summary

This is the first stable release of the next major version of the .NET
APM SDK.

The following are the high-level changes present in the 3.x.x release
line compared to 2.x.x. These include breaking changes in public APIs,
changes in artifacts, and changes to default settings.

For the full list of changes, including exactly what changed and how you
should handle them, please see the
[MIGRATING](https://github.com/DataDog/dd-trace-dotnet/blob/master/docs/MIGRATING.md)
document

### New Features
- **Support for alpine images on ARM64**. `alpine` images with version
`3.18` and above, running on ARM64 images are now supported on .NET 6+.

### Breaking changes
- **Custom-only tracing (using the _Datadog.Trace_ NuGet package),
_without_ any automatic tracing, is no longer supported**. Custom
instrumentation with the _Datadog.Trace_ NuGet where you have _also_
configured
[automatic-instrumentation](https://docs.datadoghq.com/tracing/trace_collection/automatic_instrumentation/)
is still supported as it was in v2.x.x.
- **The public API surface has changed** in the *Datadog.Trace* NuGet
package. A number of previously obsolete APIs have been removed, and
some other APIs have been marked obsolete. Most changes are related to
how you create `TracerSettings` and `Tracer` instances.
- **Changes to default settings**. The default values of some settings
have changed, and others have been removed. See below for more details.
- **Changes in behavior**. The semantic requirements and meaning of some
settings have changed, as have some of the tags added to traces. See
below for more details.
- **The 32-bit MSI installer will no longer be available**. The 64-bit
MSI installer already includes support for tracing 32-bit processes, so
you should use this installer instead.
- **The client library will still be injected when
`DD_TRACE_ENABLED=0`**. In v2.x.x, setting `DD_TRACE_ENABLED=0` would
prevent the client library from being injected into the application
completely. In v3.0.0+, the client library will still be injected, but
tracing will be disabled.
- **Referencing the `Datadog.Trace.AspNet` module is no longer
supported**. In v1.x.x and 2.x.x ASP.NET support allowed adding a
reference to the `Datadog.Trace.AspNet` module in your web.config. This
is no longer supported in v3.x.x.

### Deprecation notices
- **.NET Core 2.1 is marked EOL** in v3.0.0+ of the tracer. That means
versions 2.0, 2.1, 2.2 and 3.0 of .NET Core are now EOL. These versions
may still work with v3.0.0+, but they will no longer receive significant
testing and you will receive limited support for issues arising with EOL
versions.
- **Datadog.Trace.OpenTracing is now obsolete**. OpenTracing is
considered deprecated, and so _Datadog.Trace.OpenTracing_ is considered
deprecated. See the following details on future deprecation.
- **macOS 11 is no longer supported for CI Visibility** in v3.0.0+. Only
macOS 12 and above are supported.

### Major version policy and future deprecation
- **Announcing a major version roadmap**. We intend to make yearly major
releases, starting from v3.0.0 in 2024, and v4.0.0 in 2025. We will aim
for minimal breaking changes, with the primary focus being on
maintaining support for new versions of .NET and removal of EOL
frameworks and operating systems.
- **Planned removal of support for .NET Core 2.x and .NET Core 3.0** in
version v4.0.0+. We intend to completely remove support for .NET Core
2.x and .NET Core 3.0 in v4.0.0. .NET Framework 4.6.1+ will continue to
be supported.
- **Planned removal of support for some linux distributions**. In
version v4.0.0, we intend to drop support for CentOS 7, RHEL 7, and
CentOS Stream 8.
- **Planned remove of support for App Analytics**. In version v4.0.0, we
intend to drop support for App Analytics and associated settings.

For the full list of changes, including exactly what changed and how you
should handle them, please see the
[MIGRATING](https://github.com/DataDog/dd-trace-dotnet/blob/master/docs/MIGRATING.md)
document

## Updates in this release

In addition to the changes described above, this release includes the
following features:

* [Tracer] Skip inserting the startup hook into methods in the type
`Costura.AssemblyLoader` (#​5910)
* [Tracer] Fix bug in ADO.NET connection string extraction #​5949
* [Exception Replay] Update configuration values #​5821
* [IAST] Taint values coming from database (#​5804)
* [IAST] Allow customized cookie filtering (#​5804)
* [ASM] RASP shell injection vulnerability (#​5871)
* [Profiler] Provide the thread id that blocked another thread (#​5959)

## Changes

### Tracer
* [Tracer] Skip inserting the startup hook into methods in the type
`Costura.AssemblyLoader` (#​5910)
* Add support for alpine on arm64  (#​5933)
 ... (truncated)

## 3.1.0-prerelease

## Summary

This is the second pre-release of the next major version of the .NET APM
SDK.

- [ASM] Changes to the collection of usr.id for authenticated clients

ASM’s [Account TakeOver (ATO)
detection](https://docs.datadoghq.com/security/account_takeover_protection)
is now automatically monitoring [all compatible user authentication
frameworks](https://docs.datadoghq.com/security/application_security/enabling/compatibility/)
to detect attempted or leaked user credentials during an ATO campaign.
To do so, the monitoring of the user activity is extended to now collect
all forms of user IDs, including non-numerical forms such as usernames
or emails. This is configurable with 3 different working modes:…
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.

6 participants