module Datadog::Tracing::Contrib::Resque::ResqueJob
def after_perform_shutdown_tracer(*_)
def after_perform_shutdown_tracer(*_) shutdown_tracer_when_forked! end
def around_perform0_ddtrace(*args)
We could also just use `around_perform` but this might override the user's
to unreadable stack traces that contain this method call.
We could, in theory, use any character (e.g "\x00"), but this will lead
method definition ('0'), alongside our naming prefix for identification.
we use the lowest printable character that allows for an inline
`around_perform` hooks are executed in alphabetical order.
def around_perform0_ddtrace(*args) return yield unless datadog_configuration && Tracing.enabled? Tracing.trace(Ext::SPAN_JOB, **span_options) do |span| span.resource = args.first.is_a?(Hash) && args.first['job_class'] || name span.span_type = Tracing::Metadata::Ext::AppTypes::TYPE_WORKER span.set_tag(Contrib::Ext::Messaging::TAG_SYSTEM, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_JOB) span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_CONSUMER) # 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
def datadog_configuration
def datadog_configuration Datadog.configuration.tracing[:resque] end
def forked?
def forked? Datadog.configuration_for(::Resque, :forked) == true end
def on_failure_shutdown_tracer(*_)
def on_failure_shutdown_tracer(*_) shutdown_tracer_when_forked! end
def shutdown_tracer_when_forked!
def shutdown_tracer_when_forked! Tracing.shutdown! if forked? end
def span_options
def span_options { service: datadog_configuration[:service_name], on_error: datadog_configuration[:error_handler] } end