class Sidekiq::Tracer::ServerMiddleware
Attributes
active_span[R]
after_trace[R]
tracer[R]
Public Class Methods
new(tracer:, active_span:, after_trace:)
click to toggle source
# File lib/sidekiq/tracer/server_middleware.rb, line 10 def initialize(tracer:, active_span:, after_trace:) @tracer = tracer @active_span = active_span @after_trace = after_trace end
Public Instance Methods
call(_worker, job, _queue) { || ... }
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/sidekiq/tracer/server_middleware.rb, line 17 def call(_worker, job, _queue) parent_span_context = extract(job) follows_from = OpenTracing::Reference.follows_from(parent_span_context) tracer.start_active_span(operation_name(job), references: [follows_from], ignore_active_scope: true, tags: tags(job, "consumer")) do |scope| begin yield rescue StandardError => e tag_errors(scope.span, e) if scope.span raise ensure after_trace&.call(scope.span) if scope.span end end end
Private Instance Methods
extract(job)
click to toggle source
# File lib/sidekiq/tracer/server_middleware.rb, line 45 def extract(job) carrier = job[TRACE_CONTEXT_KEY] return unless carrier tracer.extract(OpenTracing::FORMAT_TEXT_MAP, carrier) end
tag_errors(span, error)
click to toggle source
rubocop:enable Metrics/MethodLength
# File lib/sidekiq/tracer/server_middleware.rb, line 40 def tag_errors(span, error) span.set_tag("error", true) span.log(event: "error", 'error.object': error) end