Skip to content

Commit

Permalink
Propagate span events. Fix #258 (#261)
Browse files Browse the repository at this point in the history
Implements #258 to pass through OTLP span events as regular events with meta.annotation_type: "span_event".
  • Loading branch information
dstrelau authored May 28, 2021
1 parent cdc02d2 commit ebaf6f4
Showing 1 changed file with 39 additions and 4 deletions.
43 changes: 39 additions & 4 deletions route/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,8 @@ func (r *Router) Export(ctx context.Context, req *collectortrace.ExportTraceServ
eventAttrs[k] = v
}

event := &types.Event{
events := make([]*types.Event, len(span.Events)+1)
events[0] = &types.Event{
Context: ctx,
APIHost: apiHost,
APIKey: apiKey,
Expand All @@ -487,10 +488,44 @@ func (r *Router) Export(ctx context.Context, req *collectortrace.ExportTraceServ
Data: eventAttrs,
}

err = r.processEvent(event, requestID)
if err != nil {
r.Logger.Error().Logf("Error processing event: " + err.Error())
for i, sevent := range span.Events {
timestamp := time.Unix(0, int64(sevent.TimeUnixNano)).UTC()
attrs := map[string]interface{}{
"trace.trace_id": traceID,
"trace.parent_id": spanID,
"name": sevent.Name,
"parent_name": span.Name,
"meta.annotation_type": "span_event",
}

if sevent.Attributes != nil {
addAttributesToMap(attrs, sevent.Attributes)
}
sampleRate, err := getSampleRateFromAttributes(attrs)
if err != nil {
debugLog.
WithField("error", err.Error()).
WithField("sampleRate", attrs["sampleRate"]).
Logf("error parsing sampleRate")
}
events[i+1] = &types.Event{
Context: ctx,
APIHost: apiHost,
APIKey: apiKey,
Dataset: dataset,
SampleRate: uint(sampleRate),
Timestamp: timestamp,
Data: attrs,
}
}

for _, evt := range events {
err = r.processEvent(evt, requestID)
if err != nil {
r.Logger.Error().Logf("Error processing event: " + err.Error())
}
}

}
}
}
Expand Down

0 comments on commit ebaf6f4

Please sign in to comment.