class Sidekiq::Tracer::ClientMiddleware

Attributes

opts[R]
tracer[R]

Public Class Methods

new(tracer: nil, opts: {}) click to toggle source
# File lib/sidekiq/tracer/client_middleware.rb, line 9
def initialize(tracer: nil, opts: {})
  @tracer = tracer
  @opts = opts
end

Public Instance Methods

call(worker_class, job, queue, redis_pool) { || ... } click to toggle source
# File lib/sidekiq/tracer/client_middleware.rb, line 14
def call(worker_class, job, queue, redis_pool)
  scope = tracer.start_active_span(
    operation_name(job), tags: tags(job, 'client')
  )
  inject(scope.span, job) if opts.fetch(:propagate_context, true)
  yield
rescue Exception => e
  if scope
    scope.span.set_tag('error', true)
    scope.span.log_kv(event: 'error', :'error.object' => e)
  end
  raise
ensure
  scope.close if scope
end

Private Instance Methods

inject(span, job) click to toggle source
# File lib/sidekiq/tracer/client_middleware.rb, line 32
def inject(span, job)
  carrier = {}
  tracer.inject(span.context, OpenTracing::FORMAT_TEXT_MAP, carrier)
  job[TRACE_CONTEXT_KEY] = carrier
end