lib/opentelemetry/trace/tracer.rb in opentelemetry-api-0.7.0 vs lib/opentelemetry/trace/tracer.rb in opentelemetry-api-0.8.0

- old
+ new

@@ -6,71 +6,38 @@ module OpenTelemetry module Trace # No-op implementation of Tracer. class Tracer - CURRENT_SPAN_KEY = Propagation::ContextKeys.current_span_key - - private_constant :CURRENT_SPAN_KEY - - # Returns the current span from the current or provided context - # - # @param [optional Context] context The context to lookup the current - # {Span} from. Defaults to Context.current - def current_span(context = nil) - context ||= Context.current - context.value(CURRENT_SPAN_KEY) || Span::INVALID - end - - # Returns a context containing the span, derived from the optional parent - # context, or the current context if one was not provided. - # - # @param [optional Context] context The context to use as the parent for - # the returned context - def context_with_span(span, parent_context: Context.current) - parent_context.set_value(CURRENT_SPAN_KEY, span) - end - # This is a helper for the default use-case of extending the current trace with a span. # # With this helper: # # OpenTelemetry.tracer.in_span('do-the-thing') do ... end # # Equivalent without helper: # - # OpenTelemetry.tracer.with_span(OpenTelemetry.tracer.start_span('do-the-thing')) do ... end + # OpenTelemetry::Trace.with_span(tracer.start_span('do-the-thing')) do ... end # # On exit, the Span that was active before calling this method will be reactivated. If an # exception occurs during the execution of the provided block, it will be recorded on the # span and reraised. # @yield [span, context] yields the newly created span and a context containing the # span to the block. def in_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil, with_parent: nil) span = nil span = start_span(name, attributes: attributes, links: links, start_timestamp: start_timestamp, kind: kind, with_parent: with_parent) - with_span(span) { |s, c| yield s, c } + Trace.with_span(span) { |s, c| yield s, c } rescue Exception => e # rubocop:disable Lint/RescueException span&.record_exception(e) span&.status = Status.new(Status::ERROR, description: "Unhandled exception of type: #{e.class}") raise e ensure span&.finish end - # Activates/deactivates the Span within the current Context, which makes the "current span" - # available implicitly. - # - # On exit, the Span that was active before calling this method will be reactivated. - # - # @param [Span] span the span to activate - # @yield [span, context] yields span and a context containing the span to the block. - def with_span(span) - Context.with_value(CURRENT_SPAN_KEY, span) { |c, s| yield s, c } - end - def start_root_span(name, attributes: nil, links: nil, start_timestamp: nil, kind: nil) Span.new end # Used when a caller wants to manage the activation/deactivation and lifecycle of @@ -80,10 +47,10 @@ # # @param [optional Context] with_parent Explicitly managed parent context # # @return [Span] def start_span(name, with_parent: nil, attributes: nil, links: nil, start_timestamp: nil, kind: nil) - span_context = current_span(with_parent).context + span_context = OpenTelemetry::Trace.current_span(with_parent).context if span_context.valid? Span.new(span_context: span_context) else Span.new