Sha256: 1189093c2404f54d2c2058b377c1150b0d0249e8aebb5f3bc3dc7ce54d2fdcc3

Contents?: true

Size: 1.43 KB

Versions: 24

Compression:

Stored size: 1.43 KB

Contents

# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
# frozen_string_literal: true

module NewRelic::Agent
  module InfiniteTracing
    module Transformer
      extend self

      def transform(span_event)
        intrinsics, user_attributes, agent_attributes = span_event
        {
          'trace_id' => intrinsics[NewRelic::Agent::SpanEventPrimitive::TRACE_ID_KEY],
          'intrinsics' => hash_to_attributes(intrinsics),
          'user_attributes' => hash_to_attributes(user_attributes),
          'agent_attributes' => hash_to_attributes(agent_attributes)
        }
      end

      private

      KLASS_TO_ARG = {
        String => :string_value,
        TrueClass => :bool_value,
        FalseClass => :bool_value,
        Integer => :int_value,
        Float => :double_value
      }
      if defined? BigDecimal
        KLASS_TO_ARG[BigDecimal] = :double_value
      end

      def safe_param_name(value)
        KLASS_TO_ARG[value.class] || raise("Unhandled class #{value.class.name}")
      end

      def hash_to_attributes(values)
        values.map do |key, value|
          begin
            [key, AttributeValue.new(safe_param_name(value) => value)]
          rescue => e
            NewRelic::Agent.logger.debug("Infinite tracing transformer error: #{e.inspect}")
            nil
          end
        end.to_h
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
newrelic-infinite_tracing-9.17.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.16.1 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.16.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.15.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.14.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.13.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.12.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.11.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.10.2 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.10.1 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.10.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.9.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.8.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.7.1 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.7.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.6.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.5.0 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.4.2 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.4.1 lib/infinite_tracing/transformer.rb
newrelic-infinite_tracing-9.4.0 lib/infinite_tracing/transformer.rb