Skip to content

Commit

Permalink
Fix applying the trace context on events (#888)
Browse files Browse the repository at this point in the history
Co-authored-by: Emir Ribić <[email protected]>
  • Loading branch information
cleptric and ribice authored Oct 14, 2024
1 parent 951e363 commit 2935366
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
13 changes: 12 additions & 1 deletion scope.go
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,15 @@ func (scope *Scope) ApplyToEvent(event *Event, hint *EventHint, client *Client)
}

for key, value := range scope.contexts {
if key == "trace" && event.Type == transactionType {
// Do not override trace context of
// transactions, otherwise it breaks the
// transaction event representation.
// For error events, the trace context is used
// to link errors and traces/spans in Sentry.
continue
}

// Ensure we are not overwriting event fields
if _, ok := event.Contexts[key]; !ok {
event.Contexts[key] = cloneContext(value)
Expand All @@ -395,7 +404,9 @@ func (scope *Scope) ApplyToEvent(event *Event, hint *EventHint, client *Client)
}

if scope.span != nil {
event.Contexts["trace"] = scope.span.traceContext().Map()
if _, ok := event.Contexts["trace"]; !ok {
event.Contexts["trace"] = scope.span.traceContext().Map()
}

transaction := scope.span.GetTransaction()
if transaction != nil {
Expand Down
3 changes: 2 additions & 1 deletion tracing.go
Original file line number Diff line number Diff line change
Expand Up @@ -554,10 +554,11 @@ func (s *Span) toEvent() *Event {
s.dynamicSamplingContext = DynamicSamplingContextFromTransaction(s)
}

contexts := make(map[string]Context, len(s.contexts))
contexts := make(map[string]Context, len(s.contexts)+1)
for k, v := range s.contexts {
contexts[k] = cloneContext(v)
}
contexts["trace"] = s.traceContext().Map()

// Make sure that the transaction source is valid
transactionSource := s.Source
Expand Down

0 comments on commit 2935366

Please sign in to comment.