Class: Vault::Tracing::SidekiqServer

Inherits:
Object
  • Object
show all
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

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