diff --git a/src/Client/Grpc/GrpcDurableTaskClient.cs b/src/Client/Grpc/GrpcDurableTaskClient.cs index f0d6e6e8b..a408151d7 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; @@ -85,6 +86,24 @@ public override async Task ScheduleNewOrchestrationInstanceAsync( Input = this.DataConverter.Serialize(input), }; + if (Activity.Current?.Id != null || Activity.Current?.TraceStateString != null) + { + if (request.ParentTraceContext == null) + { + request.ParentTraceContext = new P.TraceContext(); + } + + 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,