Sha256: 580c3e380203446b446c70d508787ad7a4c8cc150406dfc000a966152a34e54f

Contents?: true

Size: 1.6 KB

Versions: 39

Compression:

Stored size: 1.6 KB

Contents

# (c) Copyright IBM Corp. 2021
# (c) Copyright Instana Inc. 2017

module Instana
  module Instrumentation
    class SidekiqWorker
      def call(_worker, msg, _queue)
        kv_payload = { :'sidekiq-worker' => {} }
        kv_payload[:'sidekiq-worker'][:job_id] = msg['jid']
        kv_payload[:'sidekiq-worker'][:queue] = msg['queue']
        kv_payload[:'sidekiq-worker'][:job] = msg['class'].to_s
        kv_payload[:'sidekiq-worker'][:retry] = msg['retry'].to_s

        # Temporary until we move connection collection to redis
        # instrumentation
        Sidekiq.redis_pool.with do |client|
          opts = client.respond_to?(:connection) ? client.connection : client.client.options
          kv_payload[:'sidekiq-worker'][:'redis-url'] = "#{opts[:host]}:#{opts[:port]}"
        end

        if ENV.key?('INSTANA_SERVICE_NAME')
          kv_payload[:service] = ENV['INSTANA_SERVICE_NAME']
        end

        context = {}
        if msg.key?('X-Instana-T')
          trace_id = msg.delete('X-Instana-T')
          span_id = msg.delete('X-Instana-S')
          context[:trace_id] = ::Instana::Util.header_to_id(trace_id)
          context[:span_id] = ::Instana::Util.header_to_id(span_id) if span_id
        end

        ::Instana.tracer.log_start_or_continue(
          :'sidekiq-worker', kv_payload, context
        )

        yield
      rescue => e
        kv_payload[:'sidekiq-worker'][:error] = true
        ::Instana.tracer.log_info(kv_payload)
        ::Instana.tracer.log_error(e)
        raise
      ensure
        ::Instana.tracer.log_end(:'sidekiq-worker', {}) if ::Instana.tracer.tracing?
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
instana-1.209.2 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.209.1 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.209.0.pre3 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.209.0.pre2 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.209.0.pre1 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.208.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.207.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.206.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.205.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.204.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.204.0.pre3 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.204.0.pre2 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.204.0.pre1 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.203.2 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.203.1 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.203.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.202.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.201.0 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.201.0.pre1 lib/instana/instrumentation/sidekiq-worker.rb
instana-1.200.0 lib/instana/instrumentation/sidekiq-worker.rb