Skip to content

Commit

Permalink
fix null pointer in jaeger-spark-dependencies (#2327)
Browse files Browse the repository at this point in the history
fixes jaegertracing/jaeger-operator#1113

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
  • Loading branch information
moolen authored Jul 7, 2020
1 parent 5001225 commit 97d2319
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,11 @@ const (
)

var (
errZeroTraceID = errors.New("traceID is zero")
errZeroSpanID = errors.New("spanID is zero")
errZeroTraceID = errors.New("traceID is zero")
errZeroSpanID = errors.New("spanID is zero")
emptyLogList = []dbmodel.Log{}
emptyReferenceList = []dbmodel.Reference{}
emptyTagList = []dbmodel.KeyValue{}
)

// Translator configures translator
Expand Down Expand Up @@ -134,7 +137,7 @@ func toTime(nano pdata.TimestampUnixNano) time.Time {
func references(links pdata.SpanLinkSlice, parentSpanID pdata.SpanID, traceID dbmodel.TraceID) ([]dbmodel.Reference, error) {
parentSpanIDSet := len(parentSpanID.Bytes()) != 0
if !parentSpanIDSet && links.Len() == 0 {
return nil, nil
return emptyReferenceList, nil
}

refsCount := links.Len()
Expand Down Expand Up @@ -265,11 +268,9 @@ func (c *Translator) tags(span pdata.Span) ([]dbmodel.KeyValue, map[string]inter
tagsCount++
}
}

if tagsCount == 0 {
return nil, nil
return emptyTagList, nil
}

tags := make([]dbmodel.KeyValue, 0, tagsCount)
var tagMap map[string]interface{}
if spanKindTagFound {
Expand Down Expand Up @@ -365,7 +366,7 @@ func getTagFromStatusMsg(statusMsg string) (dbmodel.KeyValue, bool) {

func logs(events pdata.SpanEventSlice) []dbmodel.Log {
if events.Len() == 0 {
return nil
return emptyLogList
}
logs := make([]dbmodel.Log, 0, events.Len())
for i := 0; i < events.Len(); i++ {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,33 @@ func TestConvertSpan(t *testing.T) {
}, spans[0])
}

func TestSpanEmptyRef(t *testing.T) {
traces := traces("myservice")
span := addSpan(traces, "root", traceID, spanID)
span.SetStartTime(pdata.TimestampUnixNano(1000000))
span.SetEndTime(pdata.TimestampUnixNano(2000000))

c := &Translator{}
spans, err := c.ConvertSpans(traces)
require.NoError(t, err)
assert.Equal(t, 1, len(spans))
assert.Equal(t, &dbmodel.Span{
TraceID: "30313233343536373839616263646566",
SpanID: "3031323334353637",
StartTime: 1000,
Duration: 1000,
OperationName: "root",
StartTimeMillis: 1,
Tags: []dbmodel.KeyValue{}, // should not be nil
Logs: []dbmodel.Log{}, // should not be nil
References: []dbmodel.Reference{}, // should not be nil
Process: dbmodel.Process{
ServiceName: "myservice",
Tags: nil,
},
}, spans[0])
}

func TestEmpty(t *testing.T) {
c := &Translator{}
spans, err := c.ConvertSpans(pdata.NewTraces())
Expand Down

0 comments on commit 97d2319

Please sign in to comment.