Sha256: 192c4a74bee7678a10872fa7f4af1838a6838d528c97aa46bbae3b97df57f719

Contents?: true

Size: 1.56 KB

Versions: 12

Compression:

Stored size: 1.56 KB

Contents

require_relative '../utils/quantization/hash'

# typed: true

module Datadog
  module Tracing
    module Contrib
      # MongoDB module includes classes and functions to instrument MongoDB clients
      module MongoDB
        EXCLUDE_KEYS = [:_id].freeze
        SHOW_KEYS = [].freeze
        DEFAULT_OPTIONS = { exclude: EXCLUDE_KEYS, show: SHOW_KEYS }.freeze

        module_function

        # skipped keys are related to command names, since they are already
        # extracted by the query_builder
        PLACEHOLDER = '?'.freeze

        # returns a formatted and normalized query
        def query_builder(command_name, database_name, command)
          # always exclude the command name
          options = Contrib::Utils::Quantization::Hash.merge_options(quantization_options, exclude: [command_name.to_s])

          # quantized statements keys are strings to avoid leaking Symbols in older Rubies
          # as Symbols are not GC'ed in Rubies prior to 2.2
          base_info = Contrib::Utils::Quantization::Hash.format(
            {
              'operation' => command_name,
              'database' => database_name,
              'collection' => command.values.first
            },
            options
          )

          base_info.merge(Contrib::Utils::Quantization::Hash.format(command, options))
        end

        def quantization_options
          Contrib::Utils::Quantization::Hash.merge_options(DEFAULT_OPTIONS, configuration[:quantize])
        end

        def configuration
          Datadog.configuration.tracing[:mongo]
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
ddtrace-1.9.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.8.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.7.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.6.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.6.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.5.2 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.5.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.5.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.4.2 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.4.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.4.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.3.0 lib/datadog/tracing/contrib/mongodb/parsers.rb