Sha256: ed07f73fca8631c1bf36ae7a5385015bb2889692725b739726e23d7c8f3330a8

Contents?: true

Size: 929 Bytes

Versions: 2

Compression:

Stored size: 929 Bytes

Contents

# Modified by SignalFx
module Sidekiq
  module Tracer
    class ClientMiddleware
      include Commons

      attr_reader :tracer, :opts

      def initialize(tracer: nil, opts: {})
        @tracer = tracer
        @opts = opts
      end

      def call(worker_class, job, queue, redis_pool)
        scope = tracer.start_active_span(
          operation_name(job), tags: tags(job, 'client')
        )
        inject(scope.span, job) if opts.fetch(:propagate_context, true)
        yield
      rescue Exception => e
        if scope
          scope.span.set_tag('error', true)
          scope.span.log_kv(event: 'error', :'error.object' => e)
        end
        raise
      ensure
        scope.close if scope
      end

      private

      def inject(span, job)
        carrier = {}
        tracer.inject(span.context, OpenTracing::FORMAT_TEXT_MAP, carrier)
        job[TRACE_CONTEXT_KEY] = carrier
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sfx-sidekiq-opentracing-0.0.4 lib/sidekiq/tracer/client_middleware.rb
sfx-sidekiq-opentracing-0.0.3 lib/sidekiq/tracer/client_middleware.rb