Fix Getting default parent span Id with root Parent (#42483)
authorTarek Mahmoud Sayed <tarekms@microsoft.com>
Sat, 19 Sep 2020 20:16:57 +0000 (13:16 -0700)
committerGitHub <noreply@github.com>
Sat, 19 Sep 2020 20:16:57 +0000 (13:16 -0700)
src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/Activity.cs
src/libraries/System.Diagnostics.DiagnosticSource/tests/ActivitySourceTests.cs

index b63b7ac..46d883f 100644 (file)
@@ -949,7 +949,12 @@ namespace System.Diagnostics
             else if (parentContext != default)
             {
                 activity._traceId = parentContext.TraceId.ToString();
-                activity._parentSpanId = parentContext.SpanId.ToString();
+
+                if (parentContext.SpanId != default)
+                {
+                    activity._parentSpanId = parentContext.SpanId.ToString();
+                }
+
                 activity.ActivityTraceFlags = parentContext.TraceFlags;
                 activity._traceState = parentContext.TraceState;
             }
index 84d3935..dff3811 100644 (file)
@@ -556,8 +556,9 @@ namespace System.Diagnostics.Tests
                 Assert.NotNull(activity);
                 Assert.NotEqual(default, ctx);
                 Assert.Equal(ctx.TraceId, activity.TraceId);
-                Assert.Equal(ctx.SpanId.ToHexString(), activity.ParentSpanId.ToHexString());
-                Assert.Equal(default(ActivitySpanId).ToHexString(), ctx.SpanId.ToHexString());
+                Assert.Equal(ctx.SpanId, activity.ParentSpanId);
+                Assert.Equal(default(ActivitySpanId), activity.ParentSpanId);
+                Assert.Equal(default(ActivitySpanId), ctx.SpanId);
             }).Dispose();
         }