Sha256: 4d89c0171cab933d6fe0ee171b3253aceb2e35264abb7778acb73a41245dd9a5

Contents?: true

Size: 1.38 KB

Versions: 9

Compression:

Stored size: 1.38 KB

Contents

# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
# frozen_string_literal: true

module NewRelic::Agent::Instrumentation::Sidekiq
  class Server
    include NewRelic::Agent::Instrumentation::ControllerInstrumentation
    include Sidekiq::ServerMiddleware if defined?(Sidekiq::ServerMiddleware)

    # Client middleware has additional parameters, and our tests use the
    # middleware client-side to work inline.
    def call(worker, msg, queue, *_)
      trace_args = if worker.respond_to?(:newrelic_trace_args)
        worker.newrelic_trace_args(msg, queue)
      else
        self.class.default_trace_args(msg)
      end
      trace_headers = msg.delete(NewRelic::NEWRELIC_KEY)

      perform_action_with_newrelic_trace(trace_args) do
        NewRelic::Agent::Transaction.merge_untrusted_agent_attributes(msg['args'], :'job.sidekiq.args',
          NewRelic::Agent::AttributeFilter::DST_NONE)

        ::NewRelic::Agent::DistributedTracing::accept_distributed_trace_headers(trace_headers, 'Other') if ::NewRelic::Agent.config[:'distributed_tracing.enabled'] && trace_headers&.any?
        yield
      end
    end

    def self.default_trace_args(msg)
      {
        :name => 'perform',
        :class_name => msg['class'],
        :category => 'OtherTransaction/SidekiqJob'
      }
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
newrelic_rpm-9.4.2 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.4.1 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.4.0 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.3.1 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.3.0 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.2.2 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.2.1 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.2.0 lib/new_relic/agent/instrumentation/sidekiq/server.rb
newrelic_rpm-9.1.0 lib/new_relic/agent/instrumentation/sidekiq/server.rb