Sha256: f415922780bfe0e0fee527ea1ceacf994becd401b67ad51d5be4de1b1db5e054

Contents?: true

Size: 1.26 KB

Versions: 14

Compression:

Stored size: 1.26 KB

Contents

require 'ddtrace/ext/app_types'
require 'ddtrace/contrib/sidekiq/ext'

require 'yaml'

module Datadog
  module Contrib
    module Sidekiq
      # Common functionality used by both client-side and server-side tracers.
      module Tracing
        def initialize(options = {})
          @tracer = options[:tracer] || Datadog.configuration[:sidekiq][:tracer]
        end

        protected

        # If class is wrapping something else, the interesting resource info
        # is the underlying, wrapped class, and not the wrapper. This is
        # primarily to support `ActiveJob`.
        def job_resource(job)
          if job['wrapped']
            job['wrapped'].to_s
          elsif job['class'] == 'Sidekiq::Extensions::DelayedClass'
            delay_extension_class(job).to_s
          else
            job['class'].to_s
          end
        rescue => e
          Datadog.logger.debug { "Error retrieving Sidekiq job class name (jid:#{job['jid']}): #{e}" }

          job['class'].to_s
        end

        #
        def delay_extension_class(job)
          clazz, method = YAML.parse(job['args'].first).children.first.children

          method = method.value[1..-1] # Remove leading `:` from method symbol

          "#{clazz.value}.#{method}"
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
ddtrace-0.45.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.44.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.43.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.42.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.41.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ls-trace-0.2.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.40.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.39.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.38.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.37.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.36.0 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.35.2 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.35.1 lib/ddtrace/contrib/sidekiq/tracing.rb
ddtrace-0.35.0 lib/ddtrace/contrib/sidekiq/tracing.rb