Module: Datadog::Tracing::Contrib::Bunny::Utils

Defined in:
lib/datadog/tracing/contrib/bunny/utils.rb

Class Method Summary collapse

Class Method Details

.continue_trace!(metadata) ⇒ void

This method returns an undefined value.

Parameters:

  • metadata (Hash, String)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/datadog/tracing/contrib/bunny/utils.rb', line 12

def continue_trace!()
  serializes_trace_digest = if .is_a?(Hash)
                              .transform_keys(&:to_sym)
                            elsif .is_a?(String)
                              JSON.parse(, symbolize_names: true)
                            else
                              return
                            end

  # A producer on a newer datadog gem may serialize digest fields this
  # consumer's TraceDigest does not know yet; drop them instead of raising.
  serializes_trace_digest = serializes_trace_digest.slice(*supported_trace_digest_keys)

  trace_digest = Datadog::Tracing::TraceDigest.new(**serializes_trace_digest)
  return unless trace_digest

  Datadog::Tracing.continue_trace!(trace_digest)
end

.supported_trace_digest_keysArray<Symbol>

Returns:

  • (Array<Symbol>)


32
33
34
35
36
37
# File 'lib/datadog/tracing/contrib/bunny/utils.rb', line 32

def supported_trace_digest_keys
  @supported_trace_digest_keys ||=
    Datadog::Tracing::TraceDigest.instance_method(:initialize).parameters.filter_map do |type, name|
      name if %i[key keyreq].include?(type)
    end
end