Sha256: c30fd5bc008ad98a43569479aad54ae033f36fbe5aeff7d4e5b81356868775d0

Contents?: true

Size: 1.13 KB

Versions: 16

Compression:

Stored size: 1.13 KB

Contents

# (c) Copyright IBM Corp. 2021
# (c) Copyright Instana Inc. 2021

module Instana
  module Instrumentation
    class Shoryuken
      def call(_worker_instance, _queue, sqs_message, _body, &block)
        if sqs_message.is_a? Array
          return yield
        end

        sqs_tags = {
          sort: 'entry',
          queue: sqs_message.queue_url
        }

        context = incomming_context_from(sqs_message.message_attributes)
        ::Instana.tracer.start_or_continue_trace(:sqs, {sqs: sqs_tags}, context, &block)
      end

      private

      def incomming_context_from(attributes)
        trace_id = try(attributes, 'X_INSTANA_T', 'X_INSTANA_ST')
        span_id = try(attributes, 'X_INSTANA_S', 'X_INSTANA_SS')
        level = try(attributes, 'X_INSTANA_L', 'X_INSTANA_SL')

        {
          trace_id: trace_id,
          span_id: span_id,
          level: level
        }.compact
      end

      def try(attributes, *args)
        key = args.detect do |a|
          attributes && attributes[a] && attributes[a].respond_to?(:string_value)
        end

        attributes[key].string_value if attributes && key
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
instana-1.200.0.pre1 lib/instana/instrumentation/shoryuken.rb
instana-1.199.6 lib/instana/instrumentation/shoryuken.rb
instana-1.199.5 lib/instana/instrumentation/shoryuken.rb
instana-1.199.4 lib/instana/instrumentation/shoryuken.rb
instana-1.199.3 lib/instana/instrumentation/shoryuken.rb
instana-1.199.2 lib/instana/instrumentation/shoryuken.rb
instana-1.199.1 lib/instana/instrumentation/shoryuken.rb
instana-1.199.0 lib/instana/instrumentation/shoryuken.rb
instana-1.198.0 lib/instana/instrumentation/shoryuken.rb
instana-1.198.0.pre1 lib/instana/instrumentation/shoryuken.rb
instana-1.197.0 lib/instana/instrumentation/shoryuken.rb
instana-1.197.0.pre2 lib/instana/instrumentation/shoryuken.rb
instana-1.197.0.pre1 lib/instana/instrumentation/shoryuken.rb
instana-1.195.4 lib/instana/instrumentation/shoryuken.rb
instana-1.195.3 lib/instana/instrumentation/shoryuken.rb
instana-1.195.2 lib/instana/instrumentation/shoryuken.rb