Sha256: cecb0b9ff89b910f447561d3ee74267f8b452085d1a7735362ce614dca2f8364

Contents?: true

Size: 1.22 KB

Versions: 40

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

require 'yaml'

require_relative '../../../core'
require_relative 'ext'

module Datadog
  module Tracing
    module Contrib
      module Sidekiq
        # Common functionality used by both client-side and server-side tracers.
        module Utils
          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
end

Version data entries

40 entries across 40 versions & 2 rubygems

Version Path
datadog-2.12.2 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.12.1 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.12.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.11.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.10.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.9.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.8.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.7.1 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.7.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.6.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.5.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.4.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.3.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.2.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
ddtrace-1.23.3 lib/datadog/tracing/contrib/sidekiq/utils.rb
ddtrace-1.23.2 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.1.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.0.0 lib/datadog/tracing/contrib/sidekiq/utils.rb
ddtrace-1.23.1 lib/datadog/tracing/contrib/sidekiq/utils.rb
datadog-2.0.0.beta2 lib/datadog/tracing/contrib/sidekiq/utils.rb