Class: OpenTelemetry::Internal::ProxyTracerProvider Private

Inherits:
Trace::TracerProvider show all
Defined in:
lib/opentelemetry/internal/proxy_tracer_provider.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

ProxyTracerProvider is an implementation of Trace::TracerProvider. It is the default global tracer provider returned by OpenTelemetry.tracer_provider. It delegates to a "real" TracerProvider after the global tracer provider is registered. It returns ProxyTracer instances until the delegate is installed.

Instance Method Summary collapse

Constructor Details

#initializeProxyTracerProvider

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new OpenTelemetry::Internal::ProxyTracerProvider instance.



35
36
37
38
39
# File 'lib/opentelemetry/internal/proxy_tracer_provider.rb', line 35

def initialize
  @mutex = Mutex.new
  @registry = {}
  @delegate = nil
end

Instance Method Details

#delegate=(provider) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Set the delegate tracer provider. If this is called more than once, a warning will be logged and superfluous calls will be ignored.

Parameters:

  • provider (TracerProvider)

    The tracer provider to delegate to



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/opentelemetry/internal/proxy_tracer_provider.rb', line 45

def delegate=(provider)
  unless @delegate.nil?
    OpenTelemetry.logger.warn 'Attempt to reset delegate in ProxyTracerProvider ignored.'
    return
  end

  provider = LegacyProviderWrapper.new(provider) unless supports_attributes?(provider)

  @mutex.synchronize do
    @delegate = provider
    @registry.each { |key, tracer| tracer.delegate = @delegate.tracer(key.name, key.version, attributes: key.attributes) }
  end
end

#tracer(deprecated_name = nil, deprecated_version = nil, name: nil, version: nil, attributes: nil) ⇒ Tracer

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a Tracer instance.

Supports both positional arguments (legacy) and keyword arguments:

tracer('name', '1.0')                                    # legacy positional
tracer(name: 'name', version: '1.0', attributes: {...})  # keyword

When both positional and keyword arguments are provided for the same parameter, the keyword argument takes precedence.

Parameters:

  • name (String) (defaults to: nil)

    Instrumentation scope name

  • version (String) (defaults to: nil)

    Instrumentation scope version

  • attributes (Hash{String => String, Numeric, Boolean, Array<String, Numeric, Boolean>}) (defaults to: nil)

    Instrumentation scope attributes

Returns:

  • (Tracer)


74
75
76
77
78
79
80
81
82
# File 'lib/opentelemetry/internal/proxy_tracer_provider.rb', line 74

def tracer(deprecated_name = nil, deprecated_version = nil, name: nil, version: nil, attributes: nil)
  name ||= deprecated_name
  version ||= deprecated_version
  @mutex.synchronize do
    return @delegate.tracer(name, version, attributes: attributes) unless @delegate.nil?

    @registry[Key.new(name, version, attributes)] ||= ProxyTracer.new
  end
end