Skip to content

Commit

Permalink
fix null pointer in jaeger-spark-dependencies
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 committed Jul 6, 2020
1 parent 00b6e96 commit 969aa0e
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,12 @@ func toTime(nano pdata.TimestampUnixNano) time.Time {
return time.Unix(0, int64(nano)).UTC()
}

var emptyReferenceList = []dbmodel.Reference{}

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 @@ -242,6 +244,8 @@ func (c *Translator) process(resource pdata.Resource) *dbmodel.Process {
return p
}

var emptyTagList = []dbmodel.KeyValue{}

func (c *Translator) tags(span pdata.Span) ([]dbmodel.KeyValue, map[string]interface{}) {
var spanKindTag, statusCodeTag, errorTag, statusMsgTag dbmodel.KeyValue
var spanKindTagFound, statusCodeTagFound, errorTagFound, statusMsgTagFound bool
Expand All @@ -265,11 +269,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 @@ -363,9 +365,11 @@ func getTagFromStatusMsg(statusMsg string) (dbmodel.KeyValue, bool) {
}, true
}

var emptyLogList = []dbmodel.Log{}

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{},
Logs: []dbmodel.Log{},
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 969aa0e

Please sign in to comment.