lib/instana/instrumentation/resque.rb in instana-1.202.0 vs lib/instana/instrumentation/resque.rb in instana-1.203.0

- old
+ new

@@ -26,10 +26,11 @@ def enqueue(klass, *args) if Instana.tracer.tracing? kvs = collect_kvs(:enqueue, klass, args) Instana.tracer.trace(:'resque-client', kvs) do + args.push(::Instana.tracer.context.to_hash) super(klass, *args) end else super(klass, *args) end @@ -39,10 +40,11 @@ if Instana.tracer.tracing? && !Instana.tracer.tracing_span?(:'resque-client') kvs = collect_kvs(:enqueue_to, klass, args) kvs[:Queue] = queue.to_s if queue Instana.tracer.trace(:'resque-client', kvs) do + args.push(::Instana.tracer.context.to_hash) super(queue, klass, *args) end else super(queue, klass, *args) end @@ -74,10 +76,18 @@ kvs[:'resque-worker'][:queue] = job.queue rescue => e ::Instana.logger.debug { "#{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" } if Instana::Config[:verbose] end - Instana.tracer.start_or_continue_trace(:'resque-worker', kvs) do + trace_context = if 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 end