From 36eb93355bbf582137e7b6c6c300a864a980dfa1 Mon Sep 17 00:00:00 2001 From: Varshi Bachu Date: Fri, 13 Dec 2024 16:00:11 -0800 Subject: [PATCH 1/6] initial commit --- src/Abstractions/TaskOptions.cs | 4 +++- src/Client/Grpc/GrpcDurableTaskClient.cs | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Abstractions/TaskOptions.cs b/src/Abstractions/TaskOptions.cs index 63f943825..3387762ef 100644 --- a/src/Abstractions/TaskOptions.cs +++ b/src/Abstractions/TaskOptions.cs @@ -100,4 +100,6 @@ public SubOrchestrationOptions(TaskOptions options, string? instanceId = null) /// The time when the orchestration instance should start executing. If not specified or if a date-time in the past /// is specified, the orchestration instance will be scheduled immediately. /// -public record StartOrchestrationOptions(string? InstanceId = null, DateTimeOffset? StartAt = null); +/// Parent Trace Id. +/// Parent Span Id. +public record StartOrchestrationOptions(string? InstanceId = null, DateTimeOffset? StartAt = null, string? ParentTraceId = null); diff --git a/src/Client/Grpc/GrpcDurableTaskClient.cs b/src/Client/Grpc/GrpcDurableTaskClient.cs index f0d6e6e8b..858178a18 100644 --- a/src/Client/Grpc/GrpcDurableTaskClient.cs +++ b/src/Client/Grpc/GrpcDurableTaskClient.cs @@ -83,6 +83,7 @@ public override async Task ScheduleNewOrchestrationInstanceAsync( Version = orchestratorName.Version, InstanceId = options?.InstanceId ?? Guid.NewGuid().ToString("N"), Input = this.DataConverter.Serialize(input), + ParentTraceContext = new P.TraceContext() { TraceParent = options?.ParentTraceId }, }; DateTimeOffset? startAt = options?.StartAt; From 06424d4a26524831fcd492f734db3b08dd3bd208 Mon Sep 17 00:00:00 2001 From: Varshi Bachu Date: Tue, 17 Dec 2024 10:32:42 -0800 Subject: [PATCH 2/6] removed comment --- src/Abstractions/TaskOptions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Abstractions/TaskOptions.cs b/src/Abstractions/TaskOptions.cs index 3387762ef..354d93bad 100644 --- a/src/Abstractions/TaskOptions.cs +++ b/src/Abstractions/TaskOptions.cs @@ -101,5 +101,4 @@ public SubOrchestrationOptions(TaskOptions options, string? instanceId = null) /// is specified, the orchestration instance will be scheduled immediately. /// /// Parent Trace Id. -/// Parent Span Id. public record StartOrchestrationOptions(string? InstanceId = null, DateTimeOffset? StartAt = null, string? ParentTraceId = null); From cfc72d45a5ca2da53b27c2a187249ace9c984ab7 Mon Sep 17 00:00:00 2001 From: Varshitha Bachu Date: Thu, 30 Jan 2025 11:15:44 -0800 Subject: [PATCH 3/6] use Activity.Current to pass the trace context --- src/Abstractions/TaskOptions.cs | 3 +-- src/Client/Grpc/GrpcDurableTaskClient.cs | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Abstractions/TaskOptions.cs b/src/Abstractions/TaskOptions.cs index 354d93bad..63f943825 100644 --- a/src/Abstractions/TaskOptions.cs +++ b/src/Abstractions/TaskOptions.cs @@ -100,5 +100,4 @@ public SubOrchestrationOptions(TaskOptions options, string? instanceId = null) /// The time when the orchestration instance should start executing. If not specified or if a date-time in the past /// is specified, the orchestration instance will be scheduled immediately. /// -/// Parent Trace Id. -public record StartOrchestrationOptions(string? InstanceId = null, DateTimeOffset? StartAt = null, string? ParentTraceId = null); +public record StartOrchestrationOptions(string? InstanceId = null, DateTimeOffset? StartAt = null); diff --git a/src/Client/Grpc/GrpcDurableTaskClient.cs b/src/Client/Grpc/GrpcDurableTaskClient.cs index 858178a18..415518c4a 100644 --- a/src/Client/Grpc/GrpcDurableTaskClient.cs +++ b/src/Client/Grpc/GrpcDurableTaskClient.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. +using System.Diagnostics; using System.Text; using Google.Protobuf.WellKnownTypes; using Microsoft.DurableTask.Client.Entities; @@ -83,7 +84,7 @@ public override async Task ScheduleNewOrchestrationInstanceAsync( Version = orchestratorName.Version, InstanceId = options?.InstanceId ?? Guid.NewGuid().ToString("N"), Input = this.DataConverter.Serialize(input), - ParentTraceContext = new P.TraceContext() { TraceParent = options?.ParentTraceId }, + ParentTraceContext = new P.TraceContext() { TraceParent = Activity.Current?.Id }, }; DateTimeOffset? startAt = options?.StartAt; From a0dbcee25bc9135eeb59ad3647f6667a99899b3e Mon Sep 17 00:00:00 2001 From: Varshitha Bachu Date: Tue, 18 Feb 2025 22:42:12 -0800 Subject: [PATCH 4/6] added trace state --- src/Client/Grpc/GrpcDurableTaskClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Grpc/GrpcDurableTaskClient.cs b/src/Client/Grpc/GrpcDurableTaskClient.cs index 415518c4a..eb29f1ce4 100644 --- a/src/Client/Grpc/GrpcDurableTaskClient.cs +++ b/src/Client/Grpc/GrpcDurableTaskClient.cs @@ -84,7 +84,7 @@ public override async Task ScheduleNewOrchestrationInstanceAsync( Version = orchestratorName.Version, InstanceId = options?.InstanceId ?? Guid.NewGuid().ToString("N"), Input = this.DataConverter.Serialize(input), - ParentTraceContext = new P.TraceContext() { TraceParent = Activity.Current?.Id }, + ParentTraceContext = new P.TraceContext() { TraceParent = Activity.Current?.Id, TraceState = Activity.Current?.TraceStateString }, }; DateTimeOffset? startAt = options?.StartAt; From 82a6717325f010aa99ab868f383f0ff7a6512992 Mon Sep 17 00:00:00 2001 From: Varshitha Bachu Date: Wed, 19 Feb 2025 11:03:32 -0800 Subject: [PATCH 5/6] added null checks for traceparent and tracestate --- src/Client/Grpc/GrpcDurableTaskClient.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Client/Grpc/GrpcDurableTaskClient.cs b/src/Client/Grpc/GrpcDurableTaskClient.cs index eb29f1ce4..a06679d27 100644 --- a/src/Client/Grpc/GrpcDurableTaskClient.cs +++ b/src/Client/Grpc/GrpcDurableTaskClient.cs @@ -84,9 +84,18 @@ public override async Task ScheduleNewOrchestrationInstanceAsync( Version = orchestratorName.Version, InstanceId = options?.InstanceId ?? Guid.NewGuid().ToString("N"), Input = this.DataConverter.Serialize(input), - ParentTraceContext = new P.TraceContext() { TraceParent = Activity.Current?.Id, TraceState = Activity.Current?.TraceStateString }, }; + if (Activity.Current?.Id != null) + { + request.ParentTraceContext.TraceParent = Activity.Current?.Id; + } + + if (Activity.Current?.TraceStateString != null) + { + request.ParentTraceContext.TraceState = Activity.Current?.TraceStateString; + } + DateTimeOffset? startAt = options?.StartAt; this.logger.SchedulingOrchestration( request.InstanceId, From 22a98eecb3b4e584de27d78de803dcce7dcc8a62 Mon Sep 17 00:00:00 2001 From: Varshitha Bachu Date: Fri, 28 Feb 2025 10:08:25 -0800 Subject: [PATCH 6/6] added null check for ParentTraceContext --- src/Client/Grpc/GrpcDurableTaskClient.cs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/Client/Grpc/GrpcDurableTaskClient.cs b/src/Client/Grpc/GrpcDurableTaskClient.cs index a06679d27..a408151d7 100644 --- a/src/Client/Grpc/GrpcDurableTaskClient.cs +++ b/src/Client/Grpc/GrpcDurableTaskClient.cs @@ -86,14 +86,22 @@ public override async Task ScheduleNewOrchestrationInstanceAsync( Input = this.DataConverter.Serialize(input), }; - if (Activity.Current?.Id != null) + if (Activity.Current?.Id != null || Activity.Current?.TraceStateString != null) { - request.ParentTraceContext.TraceParent = Activity.Current?.Id; - } + if (request.ParentTraceContext == null) + { + request.ParentTraceContext = new P.TraceContext(); + } - if (Activity.Current?.TraceStateString != null) - { - request.ParentTraceContext.TraceState = Activity.Current?.TraceStateString; + if (Activity.Current?.Id != null) + { + request.ParentTraceContext.TraceParent = Activity.Current?.Id; + } + + if (Activity.Current?.TraceStateString != null) + { + request.ParentTraceContext.TraceState = Activity.Current?.TraceStateString; + } } DateTimeOffset? startAt = options?.StartAt;