Verified Commit c6abe167 authored by Hercules Merscher's avatar Hercules Merscher 🌴
Browse files

fix: Opentracing wrappers

parent 427780d9
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -7,27 +7,26 @@ module Labkit
    # https://edgeapi.rubyonrails.org/classes/ActiveSupport/Notifications/Instrumenter.html#method-c-new
    class AbstractInstrumenter
      def start(_name, _id, payload)
        scope = Labkit::Tracing::TracingUtils.tracer.start_active_span(span_name(payload))
        span_wrapper = Labkit::Tracing::TracingUtils.tracer.start_active_span(span_name(payload))

        scope_stack.push scope
        scope_stack.push span_wrapper
      end

      def finish(_name, _id, payload)
        scope = scope_stack.pop
        span = scope.span
        span_wrapper = scope_stack.pop

        Labkit::Tracing::TracingUtils.log_common_fields_on_span(span, span_name(payload))
        Labkit::Tracing::TracingUtils.log_common_fields_on_span(span_wrapper, span_name(payload))

        # exception_object is the standard exception payload from ActiveSupport::Notifications
        # https://github.com/rails/rails/blob/v6.0.3.1/activesupport/lib/active_support/notifications/instrumenter.rb#L26
        exception = payload[:exception_object].presence || payload[:exception].presence
        span.set_error(exception)
        span_wrapper.set_error(exception)

        tags(payload).each do |k, v|
          span.set_tag(k, v)
          span_wrapper.set_tag(k, v)
        end

        scope.close
        span_wrapper.close
      end

      def scope_stack
+4 −0
Original line number Diff line number Diff line
@@ -40,6 +40,10 @@ module Labkit
          end
        end

        def close(**opts)
          finish(**opts)
        end

        def context
          span.context
        end
+12 −0
Original line number Diff line number Diff line
@@ -91,6 +91,18 @@ module Labkit
            @token = token
          end

          def set_tag(key, value)
            span.set_tag(key, value)
          end

          def set_error(exception)
            span.set_error(exception)
          end

          def log_event(name, **attributes)
            span.log_event(name, **attributes)
          end

          def close
            @raw_span.finish
            OpenTelemetry::Context.detach(@token)
+4 −0
Original line number Diff line number Diff line
@@ -41,6 +41,10 @@ module Labkit
          scope&.close
        end

        def close
          finish
        end

        def context
          span.context
        end
+5 −2
Original line number Diff line number Diff line
@@ -34,15 +34,18 @@ module Labkit
        end

        def active_span
          OpenTracing.active_span
          span = OpenTracing.active_span
          OpentracingSpan.new(span) if span
        end

        def start_active_span(operation_name, tags: nil)
          if tags
          scope = if tags
                    OpenTracing.start_active_span(operation_name, tags: tags)
                  else
                    OpenTracing.start_active_span(operation_name)
                  end

          OpentracingSpan.new(scope)
        end
      end
    end
Loading