Class: Vault::Tracing::SidekiqServer
- Inherits:
-
Object
- Object
- Vault::Tracing::SidekiqServer
- Defined in:
- lib/vault-tools/tracing/sidekiq_server.rb
Overview
Tracing info for sidekiq This was lifted straight out of heroku/coal_car
Instance Method Summary collapse
- #call(worker, job, _queue) ⇒ Object
-
#initialize(config = nil) ⇒ SidekiqServer
constructor
A new instance of SidekiqServer.
Constructor Details
#initialize(config = nil) ⇒ SidekiqServer
Returns a new instance of SidekiqServer.
6 7 8 9 |
# File 'lib/vault-tools/tracing/sidekiq_server.rb', line 6 def initialize(config = nil) @config = ZipkinTracer::Config.new(nil, config).freeze @tracer = ZipkinTracer::TracerFactory.new.tracer(@config) end |
Instance Method Details
#call(worker, job, _queue) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/vault-tools/tracing/sidekiq_server.rb', line 11 def call(worker, job, _queue) result = nil id = trace_id(job) klass = job["wrapped".freeze] || worker.class.to_s ::ZipkinTracer::TraceContainer.with_trace_id(id) do if id.sampled? @tracer.with_new_span(id, klass) do |span| span.record("sidekiq.start") result = yield span.record("sidekiq.end") end else yield end end ::Trace.tracer.flush! if ::Trace.tracer.respond_to?(:flush!) result end |