From ab95f3a240435ba0296ec88b098618ed54454353 Mon Sep 17 00:00:00 2001 From: Neel Shah Date: Wed, 2 Aug 2023 18:09:42 +0200 Subject: [PATCH] Add get_trace_context and apply in scope --- sentry-ruby/lib/sentry/propagation_context.rb | 10 ++++++++++ sentry-ruby/lib/sentry/scope.rb | 10 ++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sentry-ruby/lib/sentry/propagation_context.rb b/sentry-ruby/lib/sentry/propagation_context.rb index 02b7765c7..c6e69e48e 100644 --- a/sentry-ruby/lib/sentry/propagation_context.rb +++ b/sentry-ruby/lib/sentry/propagation_context.rb @@ -10,5 +10,15 @@ def initialize @parent_span_id = nil @dynamic_sampling_context = nil end + + # Returns the trace context that can be used to embed in an Event. + # @return [Hash] + def get_trace_context + { + trace_id: @trace_id, + span_id: @span_id, + parent_span_id: @parent_span_id + } + end end end diff --git a/sentry-ruby/lib/sentry/scope.rb b/sentry-ruby/lib/sentry/scope.rb index 4c7b2e442..a7be87e9e 100644 --- a/sentry-ruby/lib/sentry/scope.rb +++ b/sentry-ruby/lib/sentry/scope.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "sentry/breadcrumb_buffer" +require "sentry/propagation_context" require "etc" module Sentry @@ -20,7 +21,8 @@ class Scope :event_processors, :rack_env, :span, - :session + :session, + :propagation_context ] attr_reader(*ATTRIBUTES) @@ -50,7 +52,9 @@ def apply_to_event(event, hint = nil) event.transaction_info = { source: transaction_source } if transaction_source if span - event.contexts[:trace] = span.get_trace_context + event.contexts[:trace] ||= span.get_trace_context + else + event.contexts[:trace] ||= propagation_context.get_trace_context end event.fingerprint = fingerprint @@ -95,6 +99,7 @@ def dup copy.fingerprint = fingerprint.deep_dup copy.span = span.deep_dup copy.session = session.deep_dup + copy.propagation_context = propagation_context.deep_dup copy end @@ -111,6 +116,7 @@ def update_from_scope(scope) self.transaction_sources = scope.transaction_sources self.fingerprint = scope.fingerprint self.span = scope.span + self.propagation_context = scope.propagation_context end # Updates the scope's data from the given options.