module Datadog::Contrib::Resque::ResqueJob

Uses Resque job hooks to create traces

Public Instance Methods

after_perform_shutdown_tracer(*_) click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 52
def after_perform_shutdown_tracer(*_)
  shutdown_tracer_when_forked!
end
around_perform0_ddtrace(*args) { || ... } click to toggle source

`around_perform` hooks are executed in alphabetical order. we use the lowest printable character that allows for an inline method definition ('0'), alongside our naming prefix for identification.

We could, in theory, use any character (e.g “x00”), but this will lead to unreadable stack traces that contain this method call.

We could also just use `around_perform` but this might override the user's own method.

# File lib/ddtrace/contrib/resque/resque_job.rb, line 34
def around_perform0_ddtrace(*args)
  return yield unless datadog_configuration && tracer

  tracer.trace(Ext::SPAN_JOB, span_options) do |span|
    span.resource = args.first.is_a?(Hash) && args.first['job_class'] || name
    span.span_type = Datadog::Ext::AppTypes::WORKER
    # Set analytics sample rate
    if Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
      Contrib::Analytics.set_sample_rate(span, datadog_configuration[:analytics_sample_rate])
    end

    # Measure service stats
    Contrib::Analytics.set_measured(span)

    yield
  end
end
on_failure_shutdown_tracer(*_) click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 56
def on_failure_shutdown_tracer(*_)
  shutdown_tracer_when_forked!
end
shutdown_tracer_when_forked!() click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 60
def shutdown_tracer_when_forked!
  tracer.shutdown! if forked?
end

Private Instance Methods

datadog_configuration() click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 81
def datadog_configuration
  Datadog.configuration[:resque]
end
forked?() click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 66
def forked?
  pin = Datadog::Pin.get_from(::Resque)
  return false unless pin

  pin.config[:forked] == true
end
span_options() click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 73
def span_options
  { service: datadog_configuration[:service_name], on_error: datadog_configuration[:error_handler] }
end
tracer() click to toggle source
# File lib/ddtrace/contrib/resque/resque_job.rb, line 77
def tracer
  datadog_configuration.tracer
end