class ZipkinTracer::Sidekiq::Middleware

Attributes

config[R]
traceable_workers[R]
tracer[R]

Public Class Methods

new(config) click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 6
def initialize(config)
  @config = Config.new(nil, config).freeze
  @tracer = TracerFactory.new.tracer(@config)
  @traceable_workers = config.fetch(:traceable_workers, [])
end

Public Instance Methods

call(worker, job, queue, &block) click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 12
def call(worker, job, queue, &block)
  return block.call unless traceable_worker?(worker)

  trace(worker, job, queue, &block)
end

Private Instance Methods

trace(worker, job, queue, &block) click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 24
def trace(worker, job, queue, &block)
  trace_id = TraceGenerator.new.next_trace_id
  span_name = worker_name(worker)

  result = TraceContainer.with_trace_id(trace_id) do
    if trace_id.sampled?
      tracer.with_new_span(trace_id, span_name) do
        result = block.call
      end
    else
      result = block.call
    end
  end

  tracer.flush!
  result
end
traceable_worker?(worker) click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 20
def traceable_worker?(worker)
  traceable_workers.include?(:all) || traceable_workers.include?(worker_name(worker))
end
worker_name(worker) click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 42
def worker_name(worker)
  worker.class.to_s.to_sym
end