module SidekiqServerMiddlewareExtension
Public Instance Methods
call(_worker, msg, _queue) { || ... }
click to toggle source
# File lib/epsagon.rb, line 199 def call(_worker, msg, _queue) inner_exception = nil config = OpenTelemetry::Instrumentation::Sidekiq::Instrumentation.instance.config[:epsagon] || {} parent_context = OpenTelemetry.propagation.text.extract(msg) attributes = { 'operation' => 'perform', 'messaging.system' => 'sidekiq', 'messaging.sidekiq.job_class' => msg['wrapped']&.to_s || msg['class'], 'messaging.message_id' => msg['jid'], 'messaging.destination' => msg['queue'], 'messaging.destination_kind' => 'queue', 'messaging.sidekiq.redis_url' => Sidekiq.options['url'] || Util.redis_default_url } runner_attributes = { 'type' => 'sidekiq_worker', 'messaging.sidekiq.redis_url' => Sidekiq.options['url'] || Util.redis_default_url, } unless config[:metadata_only] attributes.merge!({ 'messaging.sidekiq.args' => JSON.dump(msg['args']) }) end tracer.in_span( msg['queue'], attributes: attributes, with_parent: parent_context, kind: :consumer ) do |trigger_span| trigger_span.add_event('created_at', timestamp: msg['created_at']) trigger_span.add_event('enqueued_at', timestamp: msg['enqueued_at']) tracer.in_span(msg['wrapped']&.to_s || msg['class'], attributes: runner_attributes, kind: :consumer ) do |runner_span| yield end rescue Exception => e inner_exception = e end raise inner_exception if inner_exception end