module Instana::Instrumentation::ResqueWorker

Public Instance Methods

perform(job) click to toggle source
Calls superclass method
# File lib/instana/instrumentation/resque.rb, line 67
def perform(job)
  kvs = {}
  kvs[:'resque-worker'] = {}

  begin
    if ENV.key?('INSTANA_SERVICE_NAME')
      kvs[:service] = ENV['INSTANA_SERVICE_NAME']
    end
    kvs[:'resque-worker'][:job] = job.payload['class'].to_s
    kvs[:'resque-worker'][:queue] = job.queue
  rescue => e
    ::Instana.logger.debug { "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" } if Instana::Config[:verbose]
  end

  trace_context = if ::Instana.config[:'resque-client'][:propagate] && job.payload['args'][-1].is_a?(Hash) && job.payload['args'][-1].keys.include?('trace_id')
                    context_from_wire = job.payload['args'].pop
                    ::Instana::SpanContext.new(
                      context_from_wire['trace_id'],
                      context_from_wire['span_id']
                    )
                  end

  Instana.tracer.start_or_continue_trace(:'resque-worker', kvs, trace_context) do
    super(job)
  end
end