Sha256: 578c76c5c921d028ce75c87d124d11c8c1241dbadc404e34c017720768bad923

Contents?: true

Size: 844 Bytes

Versions: 13

Compression:

Stored size: 844 Bytes

Contents

require 'ddtrace/ext/app_types'
require 'ddtrace/sync_writer'
require 'resque'

module Datadog
  module Contrib
    module Resque
      # Uses Resque job hooks to create traces
      module ResqueJob
        def around_perform(*args)
          pin = Pin.get_from(::Resque)
          return yield unless pin && pin.tracer
          pin.tracer.trace('resque.job', service: pin.service) do |span|
            span.resource = name
            span.span_type = pin.app_type
            yield
            span.service = pin.service
          end
        ensure
          pin.tracer.shutdown! if pin && pin.tracer
        end
      end
    end
  end
end

Resque.after_fork do
  # get the current tracer
  pin = Datadog::Pin.get_from(Resque)
  next unless pin && pin.tracer
  # clean the state so no CoW happens
  pin.tracer.provider.context = nil
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
ddtrace-0.16.1 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.16.0 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.15.0 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.2 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.1 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.0 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.0.rc1 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.0.beta2 lib/ddtrace/contrib/resque/resque_job.rb
ddtrace-0.14.0.beta1 lib/ddtrace/contrib/resque/resque_job.rb