Sha256: 69842a6fffea4713973c4f114d6d31a081670a5615c1fd54af0415b47aaf4501

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

require 'ddtrace/contrib/sidekiq/tracing'

module Datadog
  module Contrib
    module Sidekiq
      # Tracer is a Sidekiq client-side middleware which traces job enqueues/pushes
      class ClientTracer
        include Tracing

        def initialize(options = {})
          super
          @sidekiq_service = options[:client_service_name] || Datadog.configuration[:sidekiq][:client_service_name]
        end

        # Client middleware arguments are documented here:
        #   https://github.com/mperham/sidekiq/wiki/Middleware#client-middleware
        def call(worker_class, job, queue, redis_pool)
          service = @sidekiq_service
          set_service_info(service)

          resource = job_resource(job)

          @tracer.trace(Ext::SPAN_PUSH, service: service) do |span|
            span.resource = resource
            span.set_tag(Ext::TAG_JOB_ID, job['jid'])
            span.set_tag(Ext::TAG_JOB_QUEUE, job['queue'])
            span.set_tag(Ext::TAG_JOB_WRAPPER, job['class']) if job['wrapped']

            yield
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ddtrace-0.18.3 lib/ddtrace/contrib/sidekiq/client_tracer.rb
ddtrace-0.18.2 lib/ddtrace/contrib/sidekiq/client_tracer.rb
ddtrace-0.18.1 lib/ddtrace/contrib/sidekiq/client_tracer.rb
ddtrace-0.18.0 lib/ddtrace/contrib/sidekiq/client_tracer.rb