module Datadog::Contrib::Racecar::Event::ClassMethods
Class methods for Racecar
events. Note, they share the same process method and before_trace method.
Public Instance Methods
configuration()
click to toggle source
# File lib/ddtrace/contrib/racecar/event.rb, line 34 def configuration Datadog.configuration[:racecar] end
process(span, event, _id, payload)
click to toggle source
# File lib/ddtrace/contrib/racecar/event.rb, line 38 def process(span, event, _id, payload) span.service = configuration[:service_name] span.resource = payload[:consumer_class] # Tag as an external peer service span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service) # Set analytics sample rate if Contrib::Analytics.enabled?(configuration[:analytics_enabled]) Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate]) end # Measure service stats Contrib::Analytics.set_measured(span) span.set_tag(Ext::TAG_TOPIC, payload[:topic]) span.set_tag(Ext::TAG_CONSUMER, payload[:consumer_class]) span.set_tag(Ext::TAG_PARTITION, payload[:partition]) span.set_tag(Ext::TAG_OFFSET, payload[:offset]) if payload.key?(:offset) span.set_tag(Ext::TAG_FIRST_OFFSET, payload[:first_offset]) if payload.key?(:first_offset) span.set_tag(Ext::TAG_MESSAGE_COUNT, payload[:message_count]) if payload.key?(:message_count) span.set_error(payload[:exception_object]) if payload[:exception_object] end
span_options()
click to toggle source
# File lib/ddtrace/contrib/racecar/event.rb, line 26 def span_options { service: configuration[:service_name] } end
subscription(*args)
click to toggle source
Calls superclass method
# File lib/ddtrace/contrib/racecar/event.rb, line 20 def subscription(*args) super.tap do |subscription| subscription.before_trace { ensure_clean_context! } end end
tracer()
click to toggle source
# File lib/ddtrace/contrib/racecar/event.rb, line 30 def tracer -> { configuration[:tracer] } end
Private Instance Methods
ensure_clean_context!()
click to toggle source
Context
objects are thread-bound. If Racecar
re-uses threads, context from a previous trace could leak into the new trace. This “cleans” current context, preventing such a leak.
# File lib/ddtrace/contrib/racecar/event.rb, line 68 def ensure_clean_context! return unless configuration[:tracer].call_context.current_span configuration[:tracer].provider.context = Context.new end