From 868206600694b66d54dfbd0f307f59ce68f45449 Mon Sep 17 00:00:00 2001 From: Sherwood Wang Date: Sat, 20 Jan 2024 00:45:26 +0800 Subject: [PATCH] Fix ParentReference to avoid moving a parent reference to the second place Signed-off-by: Sherwood Wang --- model/adjuster/parent_reference.go | 4 ++-- model/adjuster/parent_reference_test.go | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/model/adjuster/parent_reference.go b/model/adjuster/parent_reference.go index 578518db213..272e98e2909 100644 --- a/model/adjuster/parent_reference.go +++ b/model/adjuster/parent_reference.go @@ -26,7 +26,7 @@ func ParentReference() Adjuster { for _, span := range trace.Spans { firstChildOfRef := -1 firstOtherRef := -1 - for i := 1; i < len(span.References); i++ { + for i := 0; i < len(span.References); i++ { if span.References[i].TraceID == span.TraceID { if span.References[i].RefType == model.SpanRefType_CHILD_OF { firstChildOfRef = i @@ -40,7 +40,7 @@ func ParentReference() Adjuster { if swap == -1 { swap = firstOtherRef } - if swap != -1 { + if swap != 0 && swap != -1 { span.References[swap], span.References[0] = span.References[0], span.References[swap] } } diff --git a/model/adjuster/parent_reference_test.go b/model/adjuster/parent_reference_test.go index 8c26fe92a4a..bf53ed2765d 100644 --- a/model/adjuster/parent_reference_test.go +++ b/model/adjuster/parent_reference_test.go @@ -56,6 +56,11 @@ func TestParentReference(t *testing.T) { incoming: []model.SpanRef{childOf(b)}, expected: []model.SpanRef{childOf(b)}, }, + { + name: "local, local follows - keep order", + incoming: []model.SpanRef{childOf(a), followsFrom(a)}, + expected: []model.SpanRef{childOf(a), followsFrom(a)}, + }, { name: "local and remote child in order", incoming: []model.SpanRef{childOf(a), childOf(b)},