Class: OpenTelemetry::SDK::Trace::TracerProvider
- Inherits:
-
Trace::TracerProvider
- Object
- Trace::TracerProvider
- OpenTelemetry::SDK::Trace::TracerProvider
- Defined in:
- lib/opentelemetry/sdk/trace/tracer_provider.rb
Overview
TracerProvider is the SDK implementation of Trace::TracerProvider.
Instance Attribute Summary collapse
-
#active_span_processor ⇒ Object
readonly
Returns the value of attribute active_span_processor.
-
#active_trace_config ⇒ Object
Returns the value of attribute active_trace_config.
-
#id_generator ⇒ Object
Returns the value of attribute id_generator.
-
#resource ⇒ Object
readonly
Returns the value of attribute resource.
-
#stopped ⇒ Object
(also: #stopped?)
readonly
Returns the value of attribute stopped.
Instance Method Summary collapse
-
#add_span_processor(span_processor) ⇒ Object
Adds a new SpanProcessor to this Tracer.
-
#force_flush(timeout: nil) ⇒ Integer
Immediately export all spans that have not yet been exported for all the registered SpanProcessors.
-
#initialize(resource = OpenTelemetry::SDK::Resources::Resource.create) ⇒ TracerProvider
constructor
Returns a new TracerProvider instance.
-
#shutdown(timeout: nil) ⇒ Object
Attempts to stop all the activity for this TracerProvider.
-
#tracer(name = nil, version = nil) ⇒ Tracer
Returns a Tracer instance.
Constructor Details
#initialize(resource = OpenTelemetry::SDK::Resources::Resource.create) ⇒ TracerProvider
Returns a new OpenTelemetry::SDK::Trace::TracerProvider instance.
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 22 def initialize(resource = OpenTelemetry::SDK::Resources::Resource.create) @mutex = Mutex.new @registry = {} @active_span_processor = NoopSpanProcessor.instance @active_trace_config = Config::TraceConfig::DEFAULT @id_generator = OpenTelemetry::Trace @registered_span_processors = [] @stopped = false @resource = resource end |
Instance Attribute Details
#active_span_processor ⇒ Object (readonly)
Returns the value of attribute active_span_processor.
16 17 18 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 16 def active_span_processor @active_span_processor end |
#active_trace_config ⇒ Object
Returns the value of attribute active_trace_config.
15 16 17 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 15 def active_trace_config @active_trace_config end |
#id_generator ⇒ Object
Returns the value of attribute id_generator.
15 16 17 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 15 def id_generator @id_generator end |
#resource ⇒ Object (readonly)
Returns the value of attribute resource.
16 17 18 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 16 def resource @resource end |
#stopped ⇒ Object (readonly) Also known as: stopped?
Returns the value of attribute stopped.
16 17 18 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 16 def stopped @stopped end |
Instance Method Details
#add_span_processor(span_processor) ⇒ Object
Adds a new SpanProcessor to this OpenTelemetry::SDK::Trace::Tracer.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 88 def add_span_processor(span_processor) @mutex.synchronize do if @stopped OpenTelemetry.logger.warn('calling Tracer#add_span_processor after shutdown.') return end @registered_span_processors << span_processor @active_span_processor = if @registered_span_processors.size == 1 span_processor else MultiSpanProcessor.new(@registered_span_processors.dup) end end end |
#force_flush(timeout: nil) ⇒ Integer
Immediately export all spans that have not yet been exported for all the registered SpanProcessors.
This method should only be called in cases where it is absolutely necessary, such as when using some FaaS providers that may suspend the process after an invocation, but before the Processor
exports the completed spans.
77 78 79 80 81 82 83 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 77 def force_flush(timeout: nil) @mutex.synchronize do return Export::SUCCESS if @stopped @active_span_processor.force_flush(timeout: timeout) end end |
#shutdown(timeout: nil) ⇒ Object
Attempts to stop all the activity for this OpenTelemetry::SDK::Trace::TracerProvider. Calls SpanProcessor#shutdown for all registered SpanProcessors.
This operation may block until all the Spans are processed. Must be called before turning off the main application to ensure all data are processed and exported.
After this is called all the newly created Spans will be no-op.
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 55 def shutdown(timeout: nil) @mutex.synchronize do if @stopped OpenTelemetry.logger.warn('calling Tracer#shutdown multiple times.') return end @active_span_processor.shutdown(timeout: timeout) @stopped = true end end |
#tracer(name = nil, version = nil) ⇒ Tracer
Returns a OpenTelemetry::SDK::Trace::Tracer instance.
39 40 41 42 43 |
# File 'lib/opentelemetry/sdk/trace/tracer_provider.rb', line 39 def tracer(name = nil, version = nil) name ||= '' version ||= '' @mutex.synchronize { @registry[Key.new(name, version)] ||= Tracer.new(name, version, self) } end |