lib/ddtrace/contrib/sidekiq/tracer.rb in ddtrace-0.5.0 vs lib/ddtrace/contrib/sidekiq/tracer.rb in ddtrace-0.6.0
- old
+ new
@@ -23,11 +23,11 @@
trace_agent_port: Datadog::Writer::PORT
}.freeze
# Middleware is a Sidekiq server-side middleware which traces executed jobs
class Tracer
- def initialize(options)
+ def initialize(options = {})
# check if Rails configuration is available and use it to override
# Sidekiq defaults
rails_config = ::Rails.configuration.datadog_trace rescue {}
base_config = DEFAULT_CONFIG.merge(rails_config)
user_config = base_config.merge(options)
@@ -52,10 +52,17 @@
)
end
def call(worker, job, queue)
@tracer.trace('sidekiq.job', service: @sidekiq_service, span_type: 'job') do |span|
- span.resource = job['class']
+ if job['wrapped']
+ # If class is wrapping something else, the interesting resource info
+ # is the underlying, wrapped class, and not the wrapper.
+ span.resource = job['wrapped']
+ span.set_tag('sidekiq.job.wrapper', job['class'])
+ else
+ span.resource = job['class']
+ end
span.set_tag('sidekiq.job.id', job['jid'])
span.set_tag('sidekiq.job.retry', job['retry'])
span.set_tag('sidekiq.job.queue', job['queue'])
yield
end