Sha256: 308ba8fb34961aa7d5dede9dcbb79bba0209013b58951d87b9b95b20bca6a616

Contents?: true

Size: 1.54 KB

Versions: 24

Compression:

Stored size: 1.54 KB

Contents

require_relative '../utils/quantization/hash'

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

24 entries across 24 versions & 1 rubygems

Version Path
ddtrace-1.23.3 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.23.2 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.23.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.22.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.21.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.21.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.20.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.19.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.18.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.17.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.16.2 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.16.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.16.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.15.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.14.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.13.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.13.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.12.1 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.12.0 lib/datadog/tracing/contrib/mongodb/parsers.rb
ddtrace-1.11.1 lib/datadog/tracing/contrib/mongodb/parsers.rb