Sha256: f618a7eddf9405b6c82b84b265ec72bd33eb674aba74b536cf3b6e5f356ec015

Contents?: true

Size: 1.88 KB

Versions: 14

Compression:

Stored size: 1.88 KB

Contents

require_relative 'sql_comment/comment'
require_relative 'sql_comment/ext'

require_relative '../../distributed/trace_context'

module Datadog
  module Tracing
    module Contrib
      module Propagation
        # Implements sql comment propagation related contracts.
        module SqlComment
          def self.annotate!(span_op, mode)
            return unless mode.enabled?

            span_op.set_tag(Ext::TAG_DBM_TRACE_INJECTED, true) if mode.full?
          end

          # Inject span_op and trace_op instead of TraceDigest to improve memory usage
          # for `disabled` and `service` mode
          def self.prepend_comment(sql, span_op, trace_op, mode)
            return sql unless mode.enabled?

            tags = {
              Ext::KEY_DATABASE_SERVICE => span_op.get_tag(Tracing::Metadata::Ext::TAG_PEER_SERVICE) || span_op.service,
              Ext::KEY_ENVIRONMENT => datadog_configuration.env,
              Ext::KEY_PARENT_SERVICE => datadog_configuration.service,
              Ext::KEY_VERSION => datadog_configuration.version
            }

            if mode.full?
              # When tracing is disabled, trace_operation is a dummy object that does not contain data to build traceparent
              if datadog_configuration.tracing.enabled
                tags[Ext::KEY_TRACEPARENT] =
                  Tracing::Distributed::TraceContext.new(fetcher: nil).send(:build_traceparent, trace_op.to_digest)
              else
                Datadog.logger.warn(
                  'Sql comment propagation with `full` mode is aborted, because tracing is disabled. '\
                  'Please set `Datadog.configuration.tracing.enabled = true` to continue.'
                )
              end
            end

            "#{Comment.new(tags)} #{sql}"
          end

          def self.datadog_configuration
            Datadog.configuration
          end
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
ddtrace-1.23.3 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.23.2 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.23.1 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.22.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.21.1 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.21.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.20.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.19.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.18.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.17.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.16.2 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.16.1 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.16.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb
ddtrace-1.15.0 lib/datadog/tracing/contrib/propagation/sql_comment.rb