Skip to content

Commit 7fdb6e9

Browse files
authored
[v2][adjuster] Add warning to span links adjuster (#6381)
## Which problem is this PR solving? - Towards #6344 ## Description of the changes - Add a warning to the `SpanLinks` adjuster when there is a bad span link to match the behaviour of the v1 adjuster (https://github.com/jaegertracing/jaeger/blob/main/model/adjuster/bad_span_references.go#L40) ## How was this change tested? - Updated unit tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `npm run lint` and `npm run test` --------- Signed-off-by: Mahad Zaryab <[email protected]>
1 parent 34bf409 commit 7fdb6e9

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

cmd/query/app/querysvc/adjuster/spanlinks.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ package adjuster
55

66
import (
77
"go.opentelemetry.io/collector/pdata/ptrace"
8+
9+
"github.com/jaegertracing/jaeger/internal/jptrace"
10+
)
11+
12+
const (
13+
invalidSpanLinkWarning = "Invalid span link removed"
814
)
915

1016
// SpanLinks creates an adjuster that removes span links with empty trace IDs.
@@ -40,6 +46,8 @@ func (la LinksAdjuster) adjust(span ptrace.Span) {
4046
if la.valid(link) {
4147
newLink := validLinks.AppendEmpty()
4248
link.CopyTo(newLink)
49+
} else {
50+
jptrace.AddWarning(span, invalidSpanLinkWarning)
4351
}
4452
}
4553
validLinks.CopyTo(span.Links())

cmd/query/app/querysvc/adjuster/spanlinks_test.go

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"github.com/stretchr/testify/require"
1111
"go.opentelemetry.io/collector/pdata/pcommon"
1212
"go.opentelemetry.io/collector/pdata/ptrace"
13+
14+
"github.com/jaegertracing/jaeger/internal/jptrace"
1315
)
1416

1517
func TestLinksAdjuster(t *testing.T) {
@@ -21,19 +23,32 @@ func TestLinksAdjuster(t *testing.T) {
2123
scopeSpans.Spans().AppendEmpty()
2224

2325
// span with empty traceID link
24-
spanA := scopeSpans.Spans().AppendEmpty()
25-
spanA.Links().AppendEmpty().SetTraceID(pcommon.NewTraceIDEmpty())
26+
spanB := scopeSpans.Spans().AppendEmpty()
27+
spanB.Links().AppendEmpty().SetTraceID(pcommon.NewTraceIDEmpty())
2628

2729
// span with 2 non-empty traceID links and 1 empty (or zero) traceID link
28-
spanB := scopeSpans.Spans().AppendEmpty()
29-
spanB.Links().AppendEmpty().SetTraceID(pcommon.TraceID([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}))
30-
spanB.Links().AppendEmpty().SetTraceID(pcommon.TraceID([]byte{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}))
31-
spanB.Links().AppendEmpty().SetTraceID(pcommon.TraceID([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}))
30+
spanC := scopeSpans.Spans().AppendEmpty()
31+
spanC.Links().AppendEmpty().SetTraceID(pcommon.TraceID([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}))
32+
spanC.Links().AppendEmpty().SetTraceID(pcommon.TraceID([]byte{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}))
33+
spanC.Links().AppendEmpty().SetTraceID(pcommon.TraceID([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}))
3234

3335
err := SpanLinks().Adjust(traces)
3436
spans := traces.ResourceSpans().At(0).ScopeSpans().At(0).Spans()
3537
require.NoError(t, err)
36-
assert.Equal(t, 0, spans.At(0).Links().Len())
37-
assert.Equal(t, 0, spans.At(1).Links().Len())
38-
assert.Equal(t, 2, spans.At(2).Links().Len())
38+
39+
gotSpansA := spans.At(0)
40+
assert.Equal(t, 0, gotSpansA.Links().Len())
41+
assert.Empty(t, jptrace.GetWarnings(gotSpansA))
42+
43+
gotSpansB := spans.At(1)
44+
assert.Equal(t, 0, gotSpansB.Links().Len())
45+
spanBWarnings := jptrace.GetWarnings(gotSpansB)
46+
assert.Len(t, spanBWarnings, 1)
47+
assert.Equal(t, "Invalid span link removed", spanBWarnings[0])
48+
49+
gotSpansC := spans.At(2)
50+
assert.Equal(t, 2, gotSpansC.Links().Len())
51+
spanCWarnings := jptrace.GetWarnings(gotSpansC)
52+
assert.Len(t, spanCWarnings, 1)
53+
assert.Equal(t, "Invalid span link removed", spanCWarnings[0])
3954
}

0 commit comments

Comments
 (0)