Class: NewRelic::Agent::OpenTelemetry::Trace::TracerProvider

Inherits:
OpenTelemetry::Trace::TracerProvider
  • Object
show all
Defined in:
lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb

Instance Method Summary collapse

Constructor Details

#initializeTracerProvider

Returns a new instance of TracerProvider.



13
14
15
16
# File 'lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb', line 13

def initialize
  @registry = {}
  @registry_mutex = Mutex.new
end

Instance Method Details

#excluded_tracersObject



18
19
20
# File 'lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb', line 18

def excluded_tracers
  @excluded ||= NewRelic::Agent::OpenTelemetryBridge.calculate_excluded_tracers
end

#tracer(name = nil, version = nil) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb', line 22

def tracer(name = nil, version = nil)
  # We create a no-op tracer if the tracer is configured to be excluded
  # This should only be run when a custom tracer that isn't defined by
  # OpenTelemetry instrumentation is excluded
  return ::OpenTelemetry::Trace::Tracer.new if excluded_tracers.include?(name)

  NewRelic::Agent.logger.warn 'OpenTelemetry::Trace::TracerProvider#tracer called without providing a tracer name.' if name.nil? || name.empty?
  @registry_mutex.synchronize { @registry[Key.new(name, version)] ||= OpenTelemetry::Trace::Tracer.new(name, version) }
end