Skip to content

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

Merged
bouwkast merged 3 commits into
release/2.xfrom
steven/backport-dd-base-service
Oct 4, 2024
Merged

[backport] [Tracer] Set _dd.base_service tag whenever a span's service name is different than the default value (DD_SERVICE) (#5502 => v2)#6122
bouwkast merged 3 commits into
release/2.xfrom
steven/backport-dd-base-service

Conversation

@bouwkast

@bouwkast bouwkast commented Oct 4, 2024

Copy link
Copy Markdown
Collaborator

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

Backport of #5502

@github-actions

github-actions Bot commented Oct 4, 2024

Copy link
Copy Markdown
Contributor

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,
-      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,
-      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,
-      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,

1 occurrences of :

+      aws.queue.name: MyAsyncSQSQueue,
[...]
-      aws.requestId: Guid_Empty,
+      aws.requestId: Guid_18,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    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,
-      runtime-id: Guid_1,
+      _dd.base_service: Samples.AWS.SQS

2 occurrences of :

-    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,
-      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,
-      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/,
-      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/,
-      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/,
-      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 :

+      aws.queue.name: 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/,
-      runtime-id: Guid_1,
-      span.kind: client
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_1,
-    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.requestId: Guid_18,
[...]
+      aws_service: SQS,
[...]
+      queuename: MyAsyncSQSQueue,
[...]
+      _dd.base_service: Samples.AWS.SQS

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/,
-      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/,
-      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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,
-      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,
-      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,
-      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
+      language: dotnet,
+      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,
-      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,
-      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,
-      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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
+      language: dotnet,
+      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/,
-      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/,
-      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/,
-      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/,
-      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/,
-      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/,
-      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

336 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 commented Oct 4, 2024

Copy link
Copy Markdown
Collaborator Author

Note: there may be some more snapshots that will need to be updated based on the addition of the language tag, but relying in CI to find those (maybe)

@datadog-ddstaging

datadog-ddstaging Bot commented Oct 4, 2024

Copy link
Copy Markdown

Datadog Report

Branch report: steven/backport-dd-base-service
Commit report: 9cb9fa4
Test service: dd-trace-dotnet

✅ 0 Failed, 431424 Passed, 2685 Skipped, 25h 14m 26.75s Total Time

@andrewlock

Copy link
Copy Markdown
Member

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 (6122) - mean (74ms)  : 65, 84
     .   : milestone, 74,
    master - mean (71ms)  : 67, 74
     .   : milestone, 71,

    section CallTarget+Inlining+NGEN
    This PR (6122) - mean (1,015ms)  : 999, 1031
     .   : milestone, 1015,
    master - mean (1,109ms)  : 1084, 1133
     .   : milestone, 1109,

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

    section CallTarget+Inlining+NGEN
    This PR (6122) - mean (697ms)  : 677, 717
     .   : milestone, 697,
    master - mean (777ms)  : 762, 792
     .   : milestone, 777,

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

    section CallTarget+Inlining+NGEN
    This PR (6122) - mean (668ms)  : 649, 686
     .   : milestone, 668,
    master - mean (733ms)  : 718, 748
     .   : milestone, 733,

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

    section CallTarget+Inlining+NGEN
    This PR (6122) - mean (1,112ms)  : 1084, 1140
     .   : milestone, 1112,
    master - mean (1,205ms)  : 1183, 1227
     .   : milestone, 1205,

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

    section CallTarget+Inlining+NGEN
    This PR (6122) - mean (874ms)  : 851, 897
     .   : milestone, 874,
    master - mean (942ms)  : 925, 959
     .   : milestone, 942,

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

    section CallTarget+Inlining+NGEN
    This PR (6122) - mean (859ms)  : 843, 876
     .   : milestone, 859,
    master - mean (933ms)  : 915, 951
     .   : milestone, 933,

Loading

@andrewlock

Copy link
Copy Markdown
Member

Benchmarks Report for tracer 🐌

Benchmarks for #6122 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.121
  • 1 benchmarks are slower, with geometric mean 1.182
  • 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 7.95μs 43.3ns 245ns 0.0195 0.0078 0 5.42 KB
master StartStopWithChild netcoreapp3.1 9.96μs 52.6ns 273ns 0.0193 0.00965 0 5.61 KB
master StartStopWithChild net472 16.5μs 54.3ns 210ns 1.01 0.288 0.0931 6.07 KB
#6122 StartStopWithChild net6.0 7.74μs 43.5ns 275ns 0.0192 0.00767 0 5.43 KB
#6122 StartStopWithChild netcoreapp3.1 9.98μs 56ns 384ns 0.00969 0.00484 0 5.62 KB
#6122 StartStopWithChild net472 16.3μs 46.3ns 173ns 1.02 0.31 0.0953 6.07 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 479μs 135ns 523ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 660μs 970ns 3.63μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 840μs 662ns 2.56μs 0.419 0 0 3.3 KB
#6122 WriteAndFlushEnrichedTraces net6.0 478μs 225ns 810ns 0 0 0 2.7 KB
#6122 WriteAndFlushEnrichedTraces netcoreapp3.1 647μs 319ns 1.24μs 0 0 0 2.7 KB
#6122 WriteAndFlushEnrichedTraces net472 844μs 609ns 2.28μs 0.419 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.13μs 9.16μs 0.195 0 0 18.45 KB
master SendRequest netcoreapp3.1 218μs 1.11μs 5.43μs 0.22 0 0 20.61 KB
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#6122 SendRequest net6.0 189μs 989ns 4.74μs 0.205 0 0 18.45 KB
#6122 SendRequest netcoreapp3.1 218μs 1.24μs 9.18μs 0.214 0 0 20.61 KB
#6122 SendRequest net472 0.000157ns 0.000155ns 0.000559ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #6122

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.77 KB 41.47 KB -306 B -0.73%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 587μs 2.7μs 9.73μs 0.566 0 0 41.77 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 693μs 3.44μs 15.8μs 0.34 0 0 41.86 KB
master WriteAndFlushEnrichedTraces net472 849μs 3.83μs 14.8μs 8.17 2.45 0.408 53.31 KB
#6122 WriteAndFlushEnrichedTraces net6.0 564μs 2.98μs 15.5μs 0.539 0 0 41.47 KB
#6122 WriteAndFlushEnrichedTraces netcoreapp3.1 672μs 2.33μs 8.72μs 0.342 0 0 41.86 KB
#6122 WriteAndFlushEnrichedTraces net472 878μs 3.57μs 13.4μs 8.19 2.59 0.431 53.29 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.28μs 1.28ns 4.95ns 0.0141 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 1.71μs 1.89ns 7.31ns 0.0139 0 0 1.02 KB
master ExecuteNonQuery net472 2.08μs 2.33ns 9.03ns 0.157 0 0 987 B
#6122 ExecuteNonQuery net6.0 1.2μs 0.64ns 2.48ns 0.0144 0 0 1.02 KB
#6122 ExecuteNonQuery netcoreapp3.1 1.7μs 0.838ns 3.24ns 0.0136 0 0 1.02 KB
#6122 ExecuteNonQuery net472 2μs 1.35ns 5.21ns 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.17μs 0.591ns 2.29ns 0.0137 0 0 976 B
master CallElasticsearch netcoreapp3.1 1.59μs 0.619ns 2.32ns 0.0135 0 0 976 B
master CallElasticsearch net472 2.51μs 1.49ns 5.75ns 0.157 0 0 995 B
master CallElasticsearchAsync net6.0 1.34μs 1.03ns 3.84ns 0.0134 0 0 952 B
master CallElasticsearchAsync netcoreapp3.1 1.56μs 0.904ns 3.26ns 0.0133 0 0 1.02 KB
master CallElasticsearchAsync net472 2.55μs 0.74ns 2.77ns 0.166 0 0 1.05 KB
#6122 CallElasticsearch net6.0 1.17μs 0.265ns 0.956ns 0.0135 0 0 976 B
#6122 CallElasticsearch netcoreapp3.1 1.48μs 0.676ns 2.62ns 0.0128 0 0 976 B
#6122 CallElasticsearch net472 2.53μs 1.05ns 4.05ns 0.157 0 0 995 B
#6122 CallElasticsearchAsync net6.0 1.35μs 1.42ns 5.49ns 0.0135 0 0 952 B
#6122 CallElasticsearchAsync netcoreapp3.1 1.71μs 1.29ns 4.83ns 0.0137 0 0 1.02 KB
#6122 CallElasticsearchAsync net472 2.67μs 1.44ns 5.6ns 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.26μs 0.748ns 2.8ns 0.013 0 0 952 B
master ExecuteAsync netcoreapp3.1 1.57μs 2.21ns 8.28ns 0.0125 0 0 952 B
master ExecuteAsync net472 1.82μs 1.32ns 5.1ns 0.145 0 0 915 B
#6122 ExecuteAsync net6.0 1.28μs 0.995ns 3.85ns 0.0135 0 0 952 B
#6122 ExecuteAsync netcoreapp3.1 1.64μs 1.27ns 4.73ns 0.0125 0 0 952 B
#6122 ExecuteAsync net472 1.79μs 1.03ns 3.84ns 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.15μs 2.01ns 7.52ns 0.0312 0 0 2.22 KB
master SendAsync netcoreapp3.1 5.12μs 2.18ns 8.14ns 0.0359 0 0 2.76 KB
master SendAsync net472 7.75μs 3.29ns 12.7ns 0.499 0 0 3.15 KB
#6122 SendAsync net6.0 4.2μs 2.61ns 10.1ns 0.0315 0 0 2.22 KB
#6122 SendAsync netcoreapp3.1 5μs 0.941ns 3.52ns 0.0377 0 0 2.76 KB
#6122 SendAsync net472 7.92μs 3.4ns 13.2ns 0.496 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.55μs 0.522ns 1.81ns 0.0232 0 0 1.64 KB
master EnrichedLog netcoreapp3.1 2.23μs 0.909ns 3.4ns 0.022 0 0 1.64 KB
master EnrichedLog net472 2.51μs 0.62ns 2.32ns 0.249 0 0 1.57 KB
#6122 EnrichedLog net6.0 1.56μs 0.975ns 3.78ns 0.0225 0 0 1.64 KB
#6122 EnrichedLog netcoreapp3.1 2.09μs 1.3ns 5.05ns 0.0218 0 0 1.64 KB
#6122 EnrichedLog net472 2.57μs 0.955ns 3.7ns 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 114μs 138ns 536ns 0.0568 0 0 4.28 KB
master EnrichedLog netcoreapp3.1 118μs 110ns 427ns 0.0593 0 0 4.28 KB
master EnrichedLog net472 147μs 94.5ns 354ns 0.66 0.22 0 4.46 KB
#6122 EnrichedLog net6.0 115μs 171ns 661ns 0 0 0 4.28 KB
#6122 EnrichedLog netcoreapp3.1 118μs 185ns 693ns 0 0 0 4.28 KB
#6122 EnrichedLog net472 147μs 154ns 554ns 0.661 0.22 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.98μs 1.39ns 5.22ns 0.0312 0 0 2.2 KB
master EnrichedLog netcoreapp3.1 4.04μs 1.7ns 6.56ns 0.0283 0 0 2.2 KB
master EnrichedLog net472 4.9μs 2.59ns 10ns 0.32 0 0 2.02 KB
#6122 EnrichedLog net6.0 2.99μs 1ns 3.88ns 0.0302 0 0 2.2 KB
#6122 EnrichedLog netcoreapp3.1 4.3μs 1.38ns 5.34ns 0.028 0 0 2.2 KB
#6122 EnrichedLog net472 4.93μs 1.88ns 7.28ns 0.319 0 0 2.02 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.42μs 0.718ns 2.78ns 0.0164 0 0 1.14 KB
master SendReceive netcoreapp3.1 1.83μs 0.688ns 2.48ns 0.0154 0 0 1.14 KB
master SendReceive net472 2.14μs 0.944ns 3.53ns 0.183 0.00107 0 1.16 KB
#6122 SendReceive net6.0 1.37μs 0.617ns 2.22ns 0.0164 0 0 1.14 KB
#6122 SendReceive netcoreapp3.1 1.81μs 0.649ns 2.43ns 0.0155 0 0 1.14 KB
#6122 SendReceive net472 2.09μs 1.2ns 4.65ns 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.79μs 0.855ns 3.31ns 0.0222 0 0 1.6 KB
master EnrichedLog netcoreapp3.1 3.83μs 1.78ns 6.91ns 0.0229 0 0 1.65 KB
master EnrichedLog net472 4.3μs 0.96ns 3.59ns 0.322 0 0 2.04 KB
#6122 EnrichedLog net6.0 2.73μs 2ns 7.76ns 0.0217 0 0 1.6 KB
#6122 EnrichedLog netcoreapp3.1 3.86μs 2.47ns 9.58ns 0.0212 0 0 1.65 KB
#6122 EnrichedLog net472 4.27μs 1.34ns 5.19ns 0.324 0 0 2.04 KB
Benchmarks.Trace.SpanBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #6122

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net472 1.182 607.38 717.97

Faster 🎉 in #6122

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.SpanBenchmark.StartFinishSpan‑net6.0 1.129 462.55 409.77

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 463ns 0.188ns 0.727ns 0.00812 0 0 576 B
master StartFinishSpan netcoreapp3.1 565ns 0.448ns 1.74ns 0.00788 0 0 576 B
master StartFinishSpan net472 608ns 0.301ns 1.17ns 0.0917 0 0 578 B
master StartFinishScope net6.0 473ns 0.271ns 1.05ns 0.00973 0 0 696 B
master StartFinishScope netcoreapp3.1 729ns 0.47ns 1.82ns 0.00931 0 0 696 B
master StartFinishScope net472 809ns 0.491ns 1.9ns 0.104 0 0 658 B
#6122 StartFinishSpan net6.0 410ns 0.179ns 0.695ns 0.00801 0 0 576 B
#6122 StartFinishSpan netcoreapp3.1 559ns 0.415ns 1.61ns 0.00787 0 0 576 B
#6122 StartFinishSpan net472 718ns 0.292ns 1.13ns 0.0916 0 0 578 B
#6122 StartFinishScope net6.0 510ns 0.227ns 0.879ns 0.00964 0 0 696 B
#6122 StartFinishScope netcoreapp3.1 743ns 1.02ns 3.95ns 0.00934 0 0 696 B
#6122 StartFinishScope net472 871ns 0.618ns 2.39ns 0.104 0 0 658 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #6122

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin‑net6.0 1.114 655.41 588.23

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 656ns 0.36ns 1.39ns 0.00977 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 936ns 0.689ns 2.48ns 0.00951 0 0 696 B
master RunOnMethodBegin net472 1.15μs 0.35ns 1.35ns 0.105 0 0 658 B
#6122 RunOnMethodBegin net6.0 588ns 0.203ns 0.788ns 0.0098 0 0 696 B
#6122 RunOnMethodBegin netcoreapp3.1 899ns 0.521ns 2.02ns 0.0095 0 0 696 B
#6122 RunOnMethodBegin net472 1.12μs 0.264ns 1.02ns 0.104 0 0 658 B

@bouwkast
bouwkast merged commit 83df91c into release/2.x Oct 4, 2024
@bouwkast
bouwkast deleted the steven/backport-dd-base-service branch October 4, 2024 19:35
@github-actions github-actions Bot added this to the vNext-v2 milestone Oct 4, 2024
@andrewlock andrewlock added type:backport Feature backport to old version type:bug area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) labels Oct 23, 2024
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) type:backport Feature backport to old version type:bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants