Sha256: 0c0791b7847715bb88f7fc87929942fa760a8e210d1e321c817c178821bd53bd

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

# typed: true
module Datadog
  module OpenTracer
    # OpenTracing adapter for thread local scope management
    class ThreadLocalScopeManager < ScopeManager
      # Make a span instance active.
      #
      # @param span [Span] the Span that should become active
      # @param finish_on_close [Boolean] whether the Span should automatically be
      #   finished when Scope#close is called
      # @return [Scope] instance to control the end of the active period for the
      #  Span. It is a programming error to neglect to call Scope#close on the
      #  returned instance.
      def activate(span, finish_on_close: true)
        ThreadLocalScope.new(
          manager: self,
          span: span,
          finish_on_close: finish_on_close
        ).tap do |scope|
          set_scope(scope)
        end
      end

      # @return [Scope] the currently active Scope which can be used to access the
      # currently active Span.
      #
      # If there is a non-null Scope, its wrapped Span becomes an implicit parent
      # (as Reference#CHILD_OF) of any newly-created Span at Tracer#start_active_span
      # or Tracer#start_span time.
      def active
        Thread.current[object_id.to_s]
      end

      private

      def set_scope(scope)
        Thread.current[object_id.to_s] = scope
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ddtrace-0.54.2 lib/ddtrace/opentracer/thread_local_scope_manager.rb
ddtrace-0.54.1 lib/ddtrace/opentracer/thread_local_scope_manager.rb
ddtrace-0.54.0 lib/ddtrace/opentracer/thread_local_scope_manager.rb
ddtrace-0.53.0 lib/ddtrace/opentracer/thread_local_scope_manager.rb
ddtrace-0.52.0 lib/ddtrace/opentracer/thread_local_scope_manager.rb