diff --git a/src/Orleans.Core/Diagnostics/ActivityPropagationGrainCallFilter.cs b/src/Orleans.Core/Diagnostics/ActivityPropagationGrainCallFilter.cs index 7dc2cac921..29ecebbcaa 100644 --- a/src/Orleans.Core/Diagnostics/ActivityPropagationGrainCallFilter.cs +++ b/src/Orleans.Core/Diagnostics/ActivityPropagationGrainCallFilter.cs @@ -144,7 +144,16 @@ public Task Invoke(IIncomingGrainCallContext context) var source = GetActivitySource(context); if (!string.IsNullOrEmpty(traceParent)) { - activity = source.CreateActivity(context.Request.GetActivityName(), ActivityKind.Server, traceParent); + if (ActivityContext.TryParse(traceParent, traceState, isRemote: true, out ActivityContext parentContext)) + { + // traceParent is a W3CId + activity = source.CreateActivity(context.Request.GetActivityName(), ActivityKind.Server, parentContext); + } + else + { + // Most likely, traceParent uses ActivityIdFormat.Hierarchical + activity = source.CreateActivity(context.Request.GetActivityName(), ActivityKind.Server, traceParent); + } if (activity is not null) {