Skip to content
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

[Tracer] Set _dd.base_service tag whenever a span's service name is different than the default value (DD_SERVICE) #5502

Merged
merged 31 commits into from
Sep 27, 2024

Conversation

bouwkast
Copy link
Contributor

@bouwkast bouwkast commented Apr 26, 2024

Summary of changes

This fixes the setting of the ServiceName so that instead of just adding a _dd.base_service tag when Span.ServiceName is overridden that it'll be computed during MessagePack serialization and checked to see if it is different than the default value (aka DD_SERVICE).

If it is different from the default then we add the default name as _dd.base_service

Reason for change

We want to record the base service name after the service name has been updated.

Implementation details

  • Remove the setting of this in Span.ServiceName
  • Add check in SpanMessagePackFormatter for that.

Test coverage

  • Updated snapshots

Other details

@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 26, 2024
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Apr 26, 2024

Datadog Report

Branch report: steven/dd-base-service-tag
Commit report: 8b4f455
Test service: dd-trace-dotnet

✅ 0 Failed, 332946 Passed, 1545 Skipped, 43m 40.13s Wall Time

@andrewlock
Copy link
Member

andrewlock commented Apr 26, 2024

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 (5502) - mean (70ms)  : 67, 72
     .   : milestone, 70,
    master - mean (71ms)  : 68, 74
     .   : milestone, 71,

    section CallTarget+Inlining+NGEN
    This PR (5502) - mean (1,107ms)  : 1084, 1129
     .   : milestone, 1107,
    master - mean (1,105ms)  : 1089, 1122
     .   : milestone, 1105,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5502) - mean (109ms)  : 106, 112
     .   : milestone, 109,
    master - mean (110ms)  : 106, 113
     .   : milestone, 110,

    section CallTarget+Inlining+NGEN
    This PR (5502) - mean (769ms)  : 754, 784
     .   : milestone, 769,
    master - mean (770ms)  : 755, 784
     .   : milestone, 770,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5502) - mean (93ms)  : 90, 95
     .   : milestone, 93,
    master - mean (93ms)  : 89, 97
     .   : milestone, 93,

    section CallTarget+Inlining+NGEN
    This PR (5502) - mean (723ms)  : 710, 736
     .   : milestone, 723,
    master - mean (731ms)  : 712, 750
     .   : milestone, 731,

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

    section CallTarget+Inlining+NGEN
    This PR (5502) - mean (1,200ms)  : 1168, 1231
     .   : milestone, 1200,
    master - mean (1,198ms)  : 1177, 1219
     .   : milestone, 1198,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5502) - mean (276ms)  : 272, 280
     .   : milestone, 276,
    master - mean (277ms)  : 272, 281
     .   : milestone, 277,

    section CallTarget+Inlining+NGEN
    This PR (5502) - mean (944ms)  : 921, 967
     .   : milestone, 944,
    master - mean (940ms)  : 924, 956
     .   : milestone, 940,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (5502) - mean (265ms)  : 261, 268
     .   : milestone, 265,
    master - mean (265ms)  : 262, 269
     .   : milestone, 265,

    section CallTarget+Inlining+NGEN
    This PR (5502) - mean (926ms)  : 905, 946
     .   : milestone, 926,
    master - mean (925ms)  : 908, 942
     .   : milestone, 925,

Loading

@andrewlock
Copy link
Member

andrewlock commented Apr 26, 2024

Benchmarks Report for tracer 🐌

Benchmarks for #5502 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.122
  • All benchmarks have the same 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 7.61μs 42.4ns 261ns 0.0159 0.00796 0 5.43 KB
master StartStopWithChild netcoreapp3.1 10.1μs 57.5ns 407ns 0.0204 0.0102 0 5.61 KB
master StartStopWithChild net472 16.2μs 79.9ns 339ns 1.02 0.319 0.104 6.07 KB
#5502 StartStopWithChild net6.0 7.8μs 42.5ns 251ns 0.0149 0.00746 0 5.43 KB
#5502 StartStopWithChild netcoreapp3.1 10.3μs 57.8ns 383ns 0.0156 0.00519 0 5.61 KB
#5502 StartStopWithChild net472 15.9μs 32.2ns 125ns 1.02 0.306 0.0967 6.06 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 482μs 335ns 1.3μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 649μs 277ns 1.04μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 842μs 338ns 1.31μs 0.417 0 0 3.3 KB
#5502 WriteAndFlushEnrichedTraces net6.0 479μs 304ns 1.18μs 0 0 0 2.7 KB
#5502 WriteAndFlushEnrichedTraces netcoreapp3.1 652μs 417ns 1.61μs 0 0 0 2.7 KB
#5502 WriteAndFlushEnrichedTraces net472 836μs 382ns 1.48μs 0.417 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 195μs 1.1μs 7.67μs 0.207 0 0 18.45 KB
master SendRequest netcoreapp3.1 221μs 1.26μs 8.99μs 0.213 0 0 20.61 KB
master SendRequest net472 0.000636ns 0.000259ns 0.001ns 0 0 0 0 b
#5502 SendRequest net6.0 193μs 1.09μs 7.65μs 0.195 0 0 18.45 KB
#5502 SendRequest netcoreapp3.1 214μs 1.18μs 7.94μs 0.21 0 0 20.61 KB
#5502 SendRequest net472 0.000105ns 0.000105ns 0.000365ns 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 577μs 3.01μs 14.8μs 0.579 0 0 41.65 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 693μs 3.46μs 15.5μs 0.338 0 0 41.7 KB
master WriteAndFlushEnrichedTraces net472 836μs 3.74μs 14.5μs 8.12 2.44 0.406 53.31 KB
#5502 WriteAndFlushEnrichedTraces net6.0 567μs 2.7μs 12.7μs 0.551 0 0 41.67 KB
#5502 WriteAndFlushEnrichedTraces netcoreapp3.1 665μs 2.18μs 7.88μs 0.329 0 0 41.81 KB
#5502 WriteAndFlushEnrichedTraces net472 860μs 4.28μs 17.6μs 8.45 2.53 0.422 53.28 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.24μs 0.914ns 3.54ns 0.014 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 1.77μs 1.71ns 6.63ns 0.0133 0 0 1.02 KB
master ExecuteNonQuery net472 2.1μs 1.85ns 7.17ns 0.157 0 0 987 B
#5502 ExecuteNonQuery net6.0 1.18μs 0.794ns 3.08ns 0.0143 0 0 1.02 KB
#5502 ExecuteNonQuery netcoreapp3.1 1.73μs 0.775ns 2.9ns 0.0131 0 0 1.02 KB
#5502 ExecuteNonQuery net472 2μs 0.763ns 2.86ns 0.157 0 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.25μs 0.802ns 3.11ns 0.0138 0 0 976 B
master CallElasticsearch netcoreapp3.1 1.48μs 0.428ns 1.54ns 0.0133 0 0 976 B
master CallElasticsearch net472 2.54μs 2.09ns 8.08ns 0.158 0 0 995 B
master CallElasticsearchAsync net6.0 1.33μs 0.96ns 3.59ns 0.0133 0 0 952 B
master CallElasticsearchAsync netcoreapp3.1 1.69μs 1.17ns 4.53ns 0.0143 0 0 1.02 KB
master CallElasticsearchAsync net472 2.65μs 6.48ns 23.4ns 0.166 0 0 1.05 KB
#5502 CallElasticsearch net6.0 1.2μs 0.922ns 3.57ns 0.0133 0 0 976 B
#5502 CallElasticsearch netcoreapp3.1 1.54μs 1ns 3.89ns 0.0132 0 0 976 B
#5502 CallElasticsearch net472 2.55μs 2.01ns 7.77ns 0.158 0 0 995 B
#5502 CallElasticsearchAsync net6.0 1.33μs 4.29ns 16.6ns 0.0132 0 0 952 B
#5502 CallElasticsearchAsync netcoreapp3.1 1.54μs 0.78ns 3.02ns 0.0133 0 0 1.02 KB
#5502 CallElasticsearchAsync net472 2.6μs 0.959ns 3.72ns 0.166 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.23μs 0.572ns 2.14ns 0.013 0 0 952 B
master ExecuteAsync netcoreapp3.1 1.63μs 1.01ns 3.91ns 0.0124 0 0 952 B
master ExecuteAsync net472 1.88μs 0.901ns 3.49ns 0.145 0 0 915 B
#5502 ExecuteAsync net6.0 1.23μs 1.3ns 5.03ns 0.013 0 0 952 B
#5502 ExecuteAsync netcoreapp3.1 1.58μs 1.15ns 4.46ns 0.0125 0 0 952 B
#5502 ExecuteAsync net472 1.72μs 0.853ns 3.3ns 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.17μs 1.94ns 7.26ns 0.0314 0 0 2.22 KB
master SendAsync netcoreapp3.1 5.09μs 1.69ns 6.08ns 0.0357 0 0 2.76 KB
master SendAsync net472 7.81μs 5.87ns 22.7ns 0.498 0 0 3.15 KB
#5502 SendAsync net6.0 4.25μs 1.77ns 6.39ns 0.0315 0 0 2.22 KB
#5502 SendAsync netcoreapp3.1 5.18μs 4.29ns 16.6ns 0.0363 0 0 2.76 KB
#5502 SendAsync net472 7.72μs 4.52ns 17.5ns 0.498 0 0 3.15 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.45μs 0.851ns 3.18ns 0.0233 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 2.21μs 1.16ns 4.49ns 0.0219 0 0 1.64 KB
master EnrichedLog net472 2.55μs 1.2ns 4.64ns 0.249 0 0 1.57 KB
#5502 EnrichedLog net6.0 1.53μs 1.21ns 4.52ns 0.023 0 0 1.64 KB
#5502 EnrichedLog netcoreapp3.1 2.22μs 0.956ns 3.58ns 0.0222 0 0 1.64 KB
#5502 EnrichedLog net472 2.54μs 1.33ns 4.99ns 0.25 0 0 1.57 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 115μs 250ns 969ns 0.0568 0 0 4.28 KB
master EnrichedLog netcoreapp3.1 118μs 118ns 458ns 0.0591 0 0 4.28 KB
master EnrichedLog net472 146μs 58.1ns 201ns 0.662 0.221 0 4.46 KB
#5502 EnrichedLog net6.0 113μs 82.7ns 320ns 0 0 0 4.28 KB
#5502 EnrichedLog netcoreapp3.1 118μs 148ns 554ns 0.0583 0 0 4.28 KB
#5502 EnrichedLog net472 147μs 73.6ns 275ns 0.667 0.222 0 4.46 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 2.92μs 1.2ns 4.65ns 0.0307 0 0 2.2 KB
master EnrichedLog netcoreapp3.1 4.34μs 1.83ns 6.83ns 0.0282 0 0 2.2 KB
master EnrichedLog net472 4.86μs 1.75ns 6.8ns 0.319 0 0 2.02 KB
#5502 EnrichedLog net6.0 3.12μs 0.881ns 3.3ns 0.0312 0 0 2.2 KB
#5502 EnrichedLog netcoreapp3.1 4.21μs 2.62ns 10.1ns 0.0292 0 0 2.2 KB
#5502 EnrichedLog net472 4.85μs 1.23ns 4.62ns 0.32 0 0 2.02 KB
Benchmarks.Trace.RedisBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #5502

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.RedisBenchmark.SendReceive‑net6.0 1.122 1,422.16 1,267.45

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.42μs 1.14ns 4.43ns 0.0163 0 0 1.14 KB
master SendReceive netcoreapp3.1 1.79μs 0.988ns 3.83ns 0.0152 0 0 1.14 KB
master SendReceive net472 2.05μs 0.968ns 3.62ns 0.183 0 0 1.16 KB
#5502 SendReceive net6.0 1.27μs 0.522ns 1.95ns 0.0158 0 0 1.14 KB
#5502 SendReceive netcoreapp3.1 1.72μs 1.19ns 4.61ns 0.0155 0 0 1.14 KB
#5502 SendReceive net472 2.11μs 0.625ns 2.34ns 0.183 0.00107 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.76μs 1.41ns 5.46ns 0.022 0 0 1.6 KB
master EnrichedLog netcoreapp3.1 4μs 3.49ns 13.5ns 0.022 0 0 1.65 KB
master EnrichedLog net472 4.48μs 7.98ns 29.9ns 0.322 0 0 2.04 KB
#5502 EnrichedLog net6.0 2.63μs 0.776ns 3ns 0.0224 0 0 1.6 KB
#5502 EnrichedLog netcoreapp3.1 3.94μs 0.991ns 3.71ns 0.0222 0 0 1.65 KB
#5502 EnrichedLog net472 4.32μs 1.33ns 4.97ns 0.324 0 0 2.04 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 405ns 0.236ns 0.851ns 0.0081 0 0 576 B
master StartFinishSpan netcoreapp3.1 607ns 0.687ns 2.66ns 0.00758 0 0 576 B
master StartFinishSpan net472 687ns 0.283ns 1.09ns 0.0917 0 0 578 B
master StartFinishScope net6.0 475ns 0.204ns 0.788ns 0.00969 0 0 696 B
master StartFinishScope netcoreapp3.1 720ns 0.366ns 1.37ns 0.00934 0 0 696 B
master StartFinishScope net472 834ns 2.2ns 7.93ns 0.105 0 0 658 B
#5502 StartFinishSpan net6.0 396ns 0.153ns 0.591ns 0.00799 0 0 576 B
#5502 StartFinishSpan netcoreapp3.1 602ns 0.242ns 0.939ns 0.00786 0 0 576 B
#5502 StartFinishSpan net472 696ns 0.34ns 1.32ns 0.0916 0 0 578 B
#5502 StartFinishScope net6.0 482ns 0.207ns 0.775ns 0.00985 0 0 696 B
#5502 StartFinishScope netcoreapp3.1 680ns 0.415ns 1.61ns 0.00919 0 0 696 B
#5502 StartFinishScope net472 891ns 1.04ns 4.03ns 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 681ns 0.405ns 1.57ns 0.00964 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 927ns 1.5ns 5.81ns 0.00928 0 0 696 B
master RunOnMethodBegin net472 1.2μs 0.292ns 1.13ns 0.104 0 0 658 B
#5502 RunOnMethodBegin net6.0 674ns 0.199ns 0.77ns 0.00979 0 0 696 B
#5502 RunOnMethodBegin netcoreapp3.1 964ns 0.228ns 0.854ns 0.00959 0 0 696 B
#5502 RunOnMethodBegin net472 1.09μs 0.519ns 2.01ns 0.104 0 0 658 B

@andrewlock
Copy link
Member

andrewlock commented Apr 26, 2024

Throughput/Crank Report ⚡

Throughput results for AspNetCoreSimpleController comparing the following branches/commits:

Cases where throughput results for the PR are worse than latest master (5% drop or greater), results are shown in red.

Note that these results are based on a single point-in-time result for each branch. For full results, see one of the many, many dashboards!

gantt
    title Throughput Linux x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (5502) (10.923M)   : 0, 10922868
    master (10.963M)   : 0, 10963121
    benchmarks/2.9.0 (11.081M)   : 0, 11080577

    section Automatic
    This PR (5502) (7.186M)   : 0, 7185518
    master (7.240M)   : 0, 7240324
    benchmarks/2.9.0 (7.732M)   : 0, 7732233

    section Trace stats
    master (7.497M)   : 0, 7497476

    section Manual
    master (10.963M)   : 0, 10962740

    section Manual + Automatic
    This PR (5502) (6.639M)   : 0, 6638512
    master (6.588M)   : 0, 6588199

    section DD_TRACE_ENABLED=0
    master (10.131M)   : 0, 10130852

Loading
gantt
    title Throughput Linux arm64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (5502) (9.846M)   : 0, 9845943
    master (9.533M)   : 0, 9533153
    benchmarks/2.9.0 (9.798M)   : 0, 9798067

    section Automatic
    This PR (5502) (6.652M)   : 0, 6652305
    master (6.402M)   : 0, 6401920

    section Trace stats
    master (6.896M)   : 0, 6896336

    section Manual
    master (9.548M)   : 0, 9547815

    section Manual + Automatic
    This PR (5502) (6.236M)   : 0, 6235921
    master (6.126M)   : 0, 6125610

    section DD_TRACE_ENABLED=0
    master (8.964M)   : 0, 8964389

Loading
gantt
    title Throughput Windows x64 (Total requests) 
    dateFormat  X
    axisFormat %s
    section Baseline
    This PR (5502) (10.050M)   : 0, 10049600
    master (10.182M)   : 0, 10181777
    benchmarks/2.9.0 (10.067M)   : 0, 10067315

    section Automatic
    This PR (5502) (6.619M)   : 0, 6619342
    master (6.913M)   : 0, 6912891
    benchmarks/2.9.0 (7.552M)   : 0, 7552193

    section Trace stats
    master (7.478M)   : 0, 7477860

    section Manual
    master (10.080M)   : 0, 10080257

    section Manual + Automatic
    This PR (5502) (6.309M)   : 0, 6308976
    master (6.307M)   : 0, 6307227

    section DD_TRACE_ENABLED=0
    master (9.485M)   : 0, 9485427

Loading

Copy link
Contributor

github-actions bot commented May 2, 2024

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.

2 occurrences of :

+        "_dd.base_service": "AspNetCoreSmokeTest"

19 occurrences of :

+      _dd.base_service: Samples.Aerospike

16 occurrences of :

+      _dd.base_service: Samples.AWS.DynamoDBv2

32 occurrences of :

+      language: dotnet,
[...]
+      _dd.base_service: Samples.AWS.DynamoDBv2

572 occurrences of :

+      language: dotnet,

4 occurrences of :

+      _dd.base_service: Samples.AWS.Kinesis

8 occurrences of :

+      language: dotnet,
[...]
+      _dd.base_service: Samples.AWS.Kinesis

37 occurrences of :

+      _dd.base_service: Samples.AWS.Lambda

1 occurrences of :

+      _dd.base_service: Samples.Amazon.Lambda.RuntimeSupport

7 occurrences of :

+      _dd.base_service: Samples.AWS.SimpleNotificationService

4 occurrences of :

-      runtime-id: Guid_1,
-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      runtime-id: Guid_1

8 occurrences of :

-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      _dd.base_service: Samples.AWS.SimpleNotificationService

38 occurrences of :

-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet,

64 occurrences of :

+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_2,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_3,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_4,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_5,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_6,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_7,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_8,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_9,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_10,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_11,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_12,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_13,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_14,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_15,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_16,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

1 occurrences of :

-    Resource: SQS.SendMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_24,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_25,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_26,
-    Name: sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_17,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    SpanId: Id_27,
+    SpanId: Id_24,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_18,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

1 occurrences of :

-    SpanId: Id_28,
-    Name: sqs.request,
-    Resource: SQS.SendMessageBatch,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_29,
+    SpanId: Id_25,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_30,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_31,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessageBatch,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_19,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    SpanId: Id_32,
+    SpanId: Id_26,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_20,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    SpanId: Id_33,
+    SpanId: Id_27,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_21,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    SpanId: Id_34,
+    SpanId: Id_28,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_22,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    SpanId: Id_35,
+    SpanId: Id_29,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_23,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_37,
+    TraceId: Id_30,
+    SpanId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_38,
+    TraceId: Id_30,
+    SpanId: Id_32,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_24,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_39,
+    TraceId: Id_30,
+    SpanId: Id_33,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_25,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_40,
+    TraceId: Id_30,
+    SpanId: Id_34,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_41,
+    TraceId: Id_30,
+    SpanId: Id_35,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_42,
+    TraceId: Id_30,
+    SpanId: Id_36,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_43,
+    TraceId: Id_30,
+    SpanId: Id_37,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_44,
+    TraceId: Id_30,
+    SpanId: Id_38,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_45,
+    TraceId: Id_30,
+    SpanId: Id_39,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_26,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_46,
+    TraceId: Id_30,
+    SpanId: Id_40,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_27,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_47,
+    TraceId: Id_30,
+    SpanId: Id_41,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_28,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_48,
+    TraceId: Id_30,
+    SpanId: Id_42,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_29,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_49,
+    TraceId: Id_30,
+    SpanId: Id_43,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_30,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_50,
+    TraceId: Id_30,
+    SpanId: Id_44,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_31,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_51,
+    TraceId: Id_30,
+    SpanId: Id_45,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_32,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_52,
+    TraceId: Id_30,
+    SpanId: Id_46,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_33,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_53,
+    TraceId: Id_30,
+    SpanId: Id_47,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_34,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_54,
+    TraceId: Id_30,
+    SpanId: Id_48,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_35,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_55,
+    TraceId: Id_30,
+    SpanId: Id_49,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_36,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_56,
+    TraceId: Id_30,
+    SpanId: Id_50,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_37,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_57,
+    TraceId: Id_30,
+    SpanId: Id_51,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_38,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_58,
+    TraceId: Id_30,
+    SpanId: Id_52,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_39,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_59,
+    TraceId: Id_30,
+    SpanId: Id_53,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_40,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_60,
+    TraceId: Id_30,
+    SpanId: Id_54,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_41,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_61,
+    TraceId: Id_30,
+    SpanId: Id_55,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_42,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_62,
+    TraceId: Id_30,
+    SpanId: Id_56,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_43,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_63,
+    TraceId: Id_30,
+    SpanId: Id_57,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_44,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_64,
+    TraceId: Id_30,
+    SpanId: Id_58,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_45,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_65,
+    TraceId: Id_30,
+    SpanId: Id_59,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_46,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_66,
+    TraceId: Id_30,
+    SpanId: Id_60,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_47,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_67,
+    TraceId: Id_30,
+    SpanId: Id_61,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_48,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_68,
+    TraceId: Id_30,
+    SpanId: Id_62,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_49,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_69,
+    TraceId: Id_30,
+    SpanId: Id_63,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_50,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS
[...]
-    TraceId: Id_36,
-    SpanId: Id_70,
+    TraceId: Id_30,
+    SpanId: Id_64,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_51,
[...]
+      aws_service: SQS,
[...]
+      queuename: MySyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

1 occurrences of :

-    Resource: SQS.SendMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_24,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_25,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_26,
-    Name: sqs.request,

1 occurrences of :

-    SpanId: Id_28,
-    Name: sqs.request,
-    Resource: SQS.SendMessageBatch,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_29,
+    SpanId: Id_25,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_30,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_31,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessageBatch,
-    Service: Samples.AWS.SQS-aws-sqs,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_19,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue2,
[...]
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    Name: sqs.request,
+    Name: aws.sqs.request,

2 occurrences of :

-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_2,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.request,

2 occurrences of :

-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_3,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename

2 occurrences of :

-    Name: sqs.request,
+    Name: aws.sqs.send,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_4,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.process,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_5,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MyAsyncSQSQueue,
+      span.kind: consumer
[...]
-    Name: sqs.request,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_6,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.send,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_7,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.process,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_8,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MyAsyncSQSQueue2,
+      span.kind: consumer
[...]
-    Name: sqs.request,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_9,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.send,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_10,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.process,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_11,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MyAsyncSQSQueue,
+      span.kind: consumer
[...]
-    Name: sqs.request,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_12,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.send,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_13,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.process,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_14,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MyAsyncSQSQueue2,
+      span.kind: consumer
[...]
-    Name: sqs.request,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_15,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
+    Name: aws.sqs.send,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_16,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
-    Resource: SQS.SendMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_24,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_25,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_26,
-    Name: sqs.request,
+    Name: aws.sqs.process,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_17,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MyAsyncSQSQueue,
+      span.kind: consumer
[...]
-    SpanId: Id_27,
-    Name: sqs.request,
+    SpanId: Id_24,
+    Name: aws.sqs.request,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_18,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_28,
-    Name: sqs.request,
-    Resource: SQS.SendMessageBatch,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      language: dotnet,
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    SpanId: Id_29,
-    Name: sqs.request,
+    SpanId: Id_25,
+    Name: aws.sqs.send,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_30,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_31,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessageBatch,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_19,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    SpanId: Id_32,
-    Name: sqs.request,
+    SpanId: Id_26,
+    Name: aws.sqs.process,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_20,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MyAsyncSQSQueue2,
+      span.kind: consumer
[...]
-    SpanId: Id_33,
-    Name: sqs.request,
+    SpanId: Id_27,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_21,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    SpanId: Id_34,
-    Name: sqs.request,
+    SpanId: Id_28,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_22,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    SpanId: Id_35,
-    Name: sqs.request,
+    SpanId: Id_29,
+    Name: aws.sqs.request,

2 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_23,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_37,
+    TraceId: Id_30,
+    SpanId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_38,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_32,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_24,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_39,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_33,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_25,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_40,
+    TraceId: Id_30,
+    SpanId: Id_34,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_41,
+    TraceId: Id_30,
+    SpanId: Id_35,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_42,
+    TraceId: Id_30,
+    SpanId: Id_36,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_43,
+    TraceId: Id_30,
+    SpanId: Id_37,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_44,
+    TraceId: Id_30,
+    SpanId: Id_38,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,

2 occurrences of :

-    TraceId: Id_36,
-    SpanId: Id_45,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_39,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_26,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_46,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_40,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_27,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_47,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_41,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_28,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_48,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_42,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_29,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_49,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_43,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_30,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue2,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_50,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_44,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_31,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_51,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_45,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_32,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_52,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_46,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_33,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_53,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_47,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_34,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_54,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_48,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_35,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_55,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_49,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_36,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue2,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_56,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_50,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_37,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_57,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_51,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_38,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_58,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_52,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_39,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_59,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_53,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_40,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_60,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_54,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_41,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_61,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_55,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_42,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_62,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_56,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_43,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_63,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_57,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_44,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_64,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_58,
+    Name: aws.sqs.send,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_45,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_65,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_59,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_46,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue2,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_66,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_60,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_47,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_67,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_61,
+    Name: aws.sqs.process,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_48,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      queuename: MySyncSQSQueue2,
+      span.kind: consumer
[...]
-    TraceId: Id_36,
-    SpanId: Id_68,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_62,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_49,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_69,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_63,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_50,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue,
+      queuename: MySyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    TraceId: Id_36,
-    SpanId: Id_70,
-    Name: sqs.request,
+    TraceId: Id_30,
+    SpanId: Id_64,
+    Name: aws.sqs.request,
[...]
-    ParentId: Id_37,
+    ParentId: Id_31,
[...]
+      aws.queue.name: MySyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_51,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MySyncSQSQueue2,
+      queuename: MySyncSQSQueue2,
+      span.kind: client,
+      _dd.peer.service.source: queuename

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_16,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    Name: sqs.request,
-    Resource: SQS.SendMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_24,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_25,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_26,
-    Name: sqs.request,
+    Name: aws.sqs.process,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_18,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_28,
-    Name: sqs.request,
-    Resource: SQS.SendMessageBatch,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: SendMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      span.kind: client
+      peer.service: MyAsyncSQSQueue,
+      queuename: MyAsyncSQSQueue,
+      span.kind: client,
+      _dd.peer.service.source: queuename
[...]
-    SpanId: Id_29,
-    Name: sqs.request,
+    SpanId: Id_25,
+    Name: aws.sqs.send,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue2,
[...]
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_30,
-    Name: sqs.request,
-    Resource: SQS.ReceiveMessage,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: ReceiveMessage,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
-      aws.service: SQS,
-      component: aws-sdk,
-      env: integration_tests,
-      http.method: POST,
-      http.status_code: 200,
-      http.url: http://localhost:00000/,
-      language: dotnet,
-      span.kind: client
-    }
-  },
-  {
-    TraceId: Id_1,
-    SpanId: Id_31,
-    Name: sqs.request,
-    Resource: SQS.DeleteMessageBatch,
-    Service: Samples.AWS.SQS,
-    Type: http,
-    ParentId: Id_2,
-    Tags: {
-      aws.agent: dotnet-aws-sdk,
-      aws.operation: DeleteMessageBatch,
-      aws.queue.url: http://localhost:00000/000000000000/MyAsyncSQSQueue2,
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_19,
[...]
+      aws_service: SQS,
[...]
-      span.kind: client
+      peer.service: MyAsyncSQSQueue2,
+      queuename: MyAsyncSQSQueue2,
+      span.kind: producer,
+      _dd.peer.service.source: queuename
[...]
-    SpanId: Id_32,
-    Name: sqs.request,
+    SpanId: Id_26,
+    Name: aws.sqs.process,

10 occurrences of :

+      _dd.base_service: AzureFunctionsAllTriggers

14 occurrences of :

-      span.kind: client,
-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      span.kind: client

66 occurrences of :

+      _dd.base_service: Samples.Couchbase3

590 occurrences of :

+      _dd.base_service: Samples.Elasticsearch

22 occurrences of :

+      _dd.base_service: Samples.GraphQL

22 occurrences of :

+      _dd.base_service: Samples.GraphQL3

11 occurrences of :

+      _dd.base_service: Samples.GraphQL4

16 occurrences of :

+      _dd.base_service: Samples.GraphQL7

45 occurrences of :

+      _dd.base_service: Samples.GrpcDotNet

14 occurrences of :

+      _dd.base_service: Samples.GrpcLegacy

14 occurrences of :

+      _dd.base_service: Samples.HotChocolate

6 occurrences of :

+      _dd.base_service: Samples.ManualInstrumentation

1 occurrences of :

+      _dd.base_service: updated-name

49 occurrences of :

+      _dd.base_service: Samples.MongoDB

2 occurrences of :

-    Name: Main(),
+    Name: internal,

6 occurrences of :

-      version: 1.0.0,
-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      version: 1.0.0

2 occurrences of :

-    Name: sync-calls,
+    Name: internal,

2 occurrences of :

-      version: 1.0.0,
-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      version: 1.0.0
[...]
-    Name: async-calls,
+    Name: internal,

2 occurrences of :

-      version: 1.0.0,
-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      version: 1.0.0
[...]
-    Name: sync-calls,
+    Name: internal,

17 occurrences of :

-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      _dd.base_service: Samples.MongoDB

1 occurrences of :

-    Name: sync-calls-execute,
+    Name: internal,

2 occurrences of :

-      version: 1.0.0,
-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet
+      version: 1.0.0
[...]
-    Name: async-calls-execute,
+    Name: internal,

1 occurrences of :

-      _dd.git.commit.sha: aaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbb,
-      _dd.git.repository_url: https://github.com/DataDog/dd-trace-dotnet,
[...]
-    Name: sync-calls-execute,
+    Name: internal,

294 occurrences of :

+      _dd.base_service: Samples.MySql,

294 occurrences of :

+      _dd.base_service: Samples.MySql

147 occurrences of :

+      language: dotnet,
[...]
+      _dd.base_service: Samples.MySql,

147 occurrences of :

+      language: dotnet,
[...]
+      _dd.base_service: Samples.MySql

147 occurrences of :

+      language: dotnet,
[...]
+      _dd.base_service: Samples.Npgsql

147 occurrences of :

+      _dd.base_service: Samples.Npgsql,

147 occurrences of :

+      _dd.base_service: Samples.Npgsql

91 occurrences of :

+      language: dotnet,
[...]
+      _dd.base_service: Samples.OracleMDA

53 occurrences of :

+      _dd.base_service: Samples.ProcessStart

228 occurrences of :

+      _dd.base_service: Samples.RabbitMQ

8 occurrences of :

+      _dd.base_service: Samples.Remoting

13 occurrences of :

+      _dd.base_service: Samples.ServiceStack.Redis

609 occurrences of :

+      _dd.base_service: Samples.StackExchange.Redis

168 occurrences of :

+      _dd.base_service: Samples.SqlServer,

168 occurrences of :

+      _dd.base_service: Samples.SqlServer

2 occurrences of :

+      _dd.base_service: Samples.Telemetry

2 occurrences of :

+      _dd.base_service: Samples.Yarp.DistributedTracing

@bouwkast bouwkast marked this pull request as ready for review May 3, 2024 12:34
@bouwkast bouwkast requested review from a team as code owners May 3, 2024 12:34
Copy link
Member

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

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

Nice work - I feel your pain on the snapshots 😅

One slight concern: you "only" touched 70 files here, but we have nearly 1700 snapshots - how confident are you that those snapshots definitely don't need updating vs just not being run in the normal PR tests? For example, we don't run all TFMs or all package versions, and some of those have snapshots that may need updating...

@bouwkast
Copy link
Contributor Author

bouwkast commented May 3, 2024

One slight concern: you "only" touched 70 files here, but we have nearly 1700 snapshots - how confident are you that those snapshots definitely don't need updating vs just not being run in the normal PR tests? For example, we don't run all TFMs or all package versions, and some of those have snapshots that may need updating...

Yeah makes sense. I'd expect there to be more as well. I'll try and run a full build here and update them from that.

@bouwkast bouwkast added the status:do-not-merge Work is done. Can review, but do not merge yet. label May 3, 2024
@lucaspimentel lucaspimentel changed the title Set _dd.base_service whenever ServiceName is not default Set _dd.base_service whenever a span's service name is different than the default service name May 6, 2024
@lucaspimentel lucaspimentel changed the title Set _dd.base_service whenever a span's service name is different than the default service name Set _dd.base_service whenever a span's service name is different than the default value (DD_SERVICE) May 6, 2024
@lucaspimentel lucaspimentel changed the title Set _dd.base_service whenever a span's service name is different than the default value (DD_SERVICE) Set _dd.base_service tag whenever a span's service name is different than the default value (DD_SERVICE) May 6, 2024
@lucaspimentel lucaspimentel changed the title Set _dd.base_service tag whenever a span's service name is different than the default value (DD_SERVICE) [Tracer] Set _dd.base_service tag whenever a span's service name is different than the default value (DD_SERVICE) May 6, 2024
@bouwkast bouwkast force-pushed the steven/dd-base-service-tag branch from 8b4f455 to 4f82c3e Compare May 20, 2024 15:38
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented May 20, 2024

Datadog Report

Branch report: steven/dd-base-service-tag
Commit report: d121308
Test service: dd-trace-dotnet

✅ 0 Failed, 349611 Passed, 2100 Skipped, 25h 59m 29.21s Total Time

@bouwkast bouwkast force-pushed the steven/dd-base-service-tag branch 2 times, most recently from d5ca413 to d121308 Compare June 3, 2024 16:38
@datadog-ddstaging
Copy link

datadog-ddstaging bot commented Sep 24, 2024

Datadog Report

Branch report: steven/dd-base-service-tag
Commit report: 7e8d7af
Test service: dd-trace-dotnet

❌ 32 Failed (0 Known Flaky), 474764 Passed, 3247 Skipped, 30h 26m 51.16s Total Time

❌ Failed Tests (32)

This report shows up to 5 failed tests.

  • SubmitsTracesInMySql8 - Datadog.Trace.ClrProfiler.IntegrationTests.AdoNet.MySqlCommandTests - Details

    Expand for error
     Expected exit code: 0, actual exit code: 134.
    
  • SubmitsTracesInMySql8 - Datadog.Trace.ClrProfiler.IntegrationTests.AdoNet.MySqlCommandTests - Details

    Expand for error
     Expected exit code: 0, actual exit code: 134.
    
  • SubmitsTracesInMySql8 - Datadog.Trace.ClrProfiler.IntegrationTests.AdoNet.MySqlCommandTests - Details

    Expand for error
     Expected exit code: 0, actual exit code: 134.
    
  • SubmitsTracesInMySql8 - Datadog.Trace.ClrProfiler.IntegrationTests.AdoNet.MySqlCommandTests - Details

    Expand for error
     Expected exit code: 0, actual exit code: 134.
    
  • SubmitsTracesInMySql8 - Datadog.Trace.ClrProfiler.IntegrationTests.AdoNet.MySqlCommandTests - Details

    Expand for error
     Expected exit code: 0, actual exit code: 134.
    

Copy link
Member

@lucaspimentel lucaspimentel left a comment

Choose a reason for hiding this comment

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

LGTM aside from my old comment about caching the raw MessagePack bytes for ``DefaultServiceName`.

Copy link
Member

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

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

LGTM, I think Lucas' comment about caching the default makes a lot of sense, especially as this PR will likely impact all our perf tests negatively I think (extra serialization for most automatic spans)

Copy link
Contributor Author

@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.

Ran this locally in snapshots

grep -rP "Service: \S+\.\S+-\S+" . | awk -F: '{print $1}' | sort -u

As I wasn't confident that all of the snapshots were updated and just went one-by-one

AwsDynamoDbTests.NetFramework.SchemaV0.verified.txt - DONE
AwsKinesisTests.NetFramework.SchemaV0.verified.txt - DONE
AwsSnsTests.NetFramework.SchemaV0.verified.txt - DONE
AwsSqsTests.NetFramework.SchemaV0.pre3_7_300.verified.txt - DONE
AwsSqsTests.NetFramework.SchemaV0.verified.txt - DONE
MySqlCommandTests.Net.SchemaV0.verified.txt - REMOVED
MySqlCommandTests.Net462.SchemaV0.verified.txt - REMOVED
MySqlCommandTests.Net462.tagged.SchemaV0.verified.txt - DONE
MySqlCommandTests.Net462.untagged.SchemaV0.verified.txt - DONE
MySqlCommandTests.NetCore.SchemaV0.verified.txt - REMOVED
NpgsqlCommandTests.Net462.untagged.SchemaV0.verified.txt - DONE
OracleTests.SchemaV0.verified.txt - DONE
ProcessStartCommandsCollectionTests.SubmitsTracesOsx.SchemaV0.verified.txt - DONE
ProcessStartTests.SubmitsTracesOsx.SchemaV0.verified.txt - DONE
StackExchangeRedisTests.V1_0_414.SchemaV0.verified.txt - REMOVED
StackExchangeRedisTests.V1_2_0.SchemaV0.verified.txt - REMOVED
StackExchangeRedisTests.V2_0_495.SchemaV0.verified.txt - REMOVED
SystemDataSqlClientTests.SchemaV0.disabled.verified.txt - REMOVED
SystemDataSqlClientTests.SchemaV0.enabled.verified.txt - REMOVED

I'll try to figure out how to test these tomorrow

@bouwkast bouwkast requested a review from a team as a code owner September 26, 2024 15:57
I don't think we test these versions.
With this the .NET Framework ones worked, but
then v6 ones would crash.

So reverting - was able to update the snapshots
but will need to fix this at some point in the
future.
@bouwkast bouwkast merged commit b418b62 into master Sep 27, 2024
73 checks passed
@bouwkast bouwkast deleted the steven/dd-base-service-tag branch September 27, 2024 12:00
@github-actions github-actions bot added this to the vNext-v3 milestone Sep 27, 2024
nhulston pushed a commit that referenced this pull request Sep 27, 2024
… different than the default value (`DD_SERVICE`) (#5502)

## Summary of changes

This fixes the setting of the `ServiceName` so that instead of just
adding a `_dd.base_service` tag when `Span.ServiceName` is overridden
that it'll be computed during MessagePack serialization and checked to
see if it is different than the default value (aka `DD_SERVICE`).

If it is different from the default then we add the default name as
`_dd.base_service`

## Reason for change

We want to record the base service name after the service name has been
updated.

## Implementation details

- Remove the setting of this in `Span.ServiceName`
- Add check in `SpanMessagePackFormatter` for that.

## Test coverage

- Updated snapshots

## Other details
<!-- Fixes #{issue} -->

<!-- ⚠️ Note: where possible, please obtain 2 approvals prior to
merging. Unless CODEOWNERS specifies otherwise, for external teams it is
typically best to have one review from a team member, and one review
from apm-dotnet. Trivial changes do not require 2 reviews. -->

---------

Co-authored-by: Andrew Lock <andrew.lock@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants