class OpenTelemetry::Internal::ProxyTracerProvider
It returns {ProxyTracer} instances until the delegate is installed.
It delegates to a “real” TracerProvider after the global tracer provider is registered.
It is the default global tracer provider returned by OpenTelemetry.tracer_provider.
{ProxyTracerProvider} is an implementation of {OpenTelemetry::Trace::TracerProvider}.
@api private
def delegate=(provider)
-
provider
(TracerProvider
) -- The tracer provider to delegate to
def delegate=(provider) unless @delegate.nil? OpenTelemetry.logger.warn 'Attempt to reset delegate in ProxyTracerProvider ignored.' return end @mutex.synchronize do @delegate = provider @registry.each { |key, tracer| tracer.delegate = provider.tracer(key.name, key.version) } end end
def initialize
-
(ProxyTracerProvider)
-
def initialize @mutex = Mutex.new @registry = {} @delegate = nil end
def tracer(name = nil, version = nil)
-
(Tracer)
-
Parameters:
-
version
(optional String
) -- Instrumentation package version -
name
(optional String
) -- Instrumentation package name
def tracer(name = nil, version = nil) @mutex.synchronize do return @delegate.tracer(name, version) unless @delegate.nil? @registry[Key.new(name, version)] ||= ProxyTracer.new end end