class AppPerfRpm::SidekiqServer
Public Instance Methods
call(*args) { || ... }
click to toggle source
# File lib/app_perf_rpm/instruments/sidekiq.rb, line 5 def call(*args) worker, msg, queue = args parent_span_context = extract(msg) AppPerfRpm::Tracer.sample!(parent_span_context) if AppPerfRpm::Tracer.tracing? operation = "Sidekiq_#{queue}##{msg["wrapped"]}" span = AppPerfRpm.tracer.start_span(operation, :child_of => parent_span_context, tags: { "component" => "Sidekiq", "span.kind" => "server", "http.url" => "/sidekiq/#{queue}/#{msg['wrapped']}", "peer.address" => Socket.gethostname, "bg.queue" => queue, "bg.job_name" => worker.class.to_s }) AppPerfRpm::Utils.log_source_and_backtrace(span, :sidekiq) end yield rescue Exception => e if span span.set_tag('error', true) span.log_error(e) end raise ensure span.finish if span AppPerfRpm::Tracer.sample_off! end
Private Instance Methods
extract(job)
click to toggle source
# File lib/app_perf_rpm/instruments/sidekiq.rb, line 38 def extract(job) carrier = job[AppPerfRpm::TRACE_CONTEXT_KEY] return unless carrier AppPerfRpm::tracer.extract(OpenTracing::FORMAT_TEXT_MAP, carrier) end