class NewRelic::Agent::Instrumentation::Sidekiq::Server
Constants
- ATTRIBUTE_BASE_NAMESPACE
- ATTRIBUTE_FILTER_TYPES
- ATTRIBUTE_JOB_NAMESPACE
- INSTRUMENTATION_NAME
Public Class Methods
default_trace_args(msg)
click to toggle source
# File lib/new_relic/agent/instrumentation/sidekiq/server.rb, line 42 def self.default_trace_args(msg) { :name => 'perform', :class_name => msg['class'], :category => 'OtherTransaction/SidekiqJob' } end
nr_attribute_options()
click to toggle source
# File lib/new_relic/agent/instrumentation/sidekiq/server.rb, line 50 def self.nr_attribute_options @nr_attribute_options ||= begin ATTRIBUTE_FILTER_TYPES.each_with_object({}) do |type, opts| pattern = NewRelic::Agent::AttributePreFiltering.formulate_regexp_union(:"#{ATTRIBUTE_BASE_NAMESPACE}.#{type}") opts[type] = pattern if pattern end.merge(attribute_namespace: ATTRIBUTE_JOB_NAMESPACE) end end
Public Instance Methods
call(worker, msg, queue, *_) { || ... }
click to toggle source
Client
middleware has additional parameters, and our tests use the middleware client-side to work inline.
# File lib/new_relic/agent/instrumentation/sidekiq/server.rb, line 17 def call(worker, msg, queue, *_) NewRelic::Agent.record_instrumentation_invocation(INSTRUMENTATION_NAME) 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( NewRelic::Agent::AttributePreFiltering.pre_filter(msg['args'], self.class.nr_attribute_options), ATTRIBUTE_JOB_NAMESPACE, NewRelic::Agent::AttributeFilter::DST_NONE ) if ::NewRelic::Agent.config[:'distributed_tracing.enabled'] && trace_headers&.any? ::NewRelic::Agent::DistributedTracing::accept_distributed_trace_headers(trace_headers, 'Other') end yield end end