Class: Datadog::Tracing::Transport::Traces::Chunker

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/tracing/transport/traces.rb

Overview

Traces chunker

Constant Summary collapse

DEFAULT_MAX_PAYLOAD_SIZE =

Trace agent limit payload size of 10 MiB (since agent v5.11.0): github.com/DataDog/datadog-agent/blob/6.14.1/pkg/trace/api/api.go#L46

We set the value to a conservative 5 MiB, in case network speed is slow.

5 * 1024 * 1024

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(encoder, logger:, native_events_supported:, max_size: DEFAULT_MAX_PAYLOAD_SIZE) ⇒ Chunker

Single traces larger than max_size will be discarded.



55
56
57
58
59
60
# File 'lib/datadog/tracing/transport/traces.rb', line 55

def initialize(encoder, logger:, native_events_supported:, max_size: DEFAULT_MAX_PAYLOAD_SIZE)
  @encoder = encoder
  @logger = logger
  @native_events_supported = native_events_supported
  @max_size = max_size
end

Instance Attribute Details

#encoderObject (readonly)

Returns the value of attribute encoder.



47
48
49
# File 'lib/datadog/tracing/transport/traces.rb', line 47

def encoder
  @encoder
end

#loggerObject (readonly)

Returns the value of attribute logger.



47
48
49
# File 'lib/datadog/tracing/transport/traces.rb', line 47

def logger
  @logger
end

#max_sizeObject (readonly)

Returns the value of attribute max_size.



47
48
49
# File 'lib/datadog/tracing/transport/traces.rb', line 47

def max_size
  @max_size
end

Instance Method Details

#encode_in_chunks(traces) ⇒ Enumerable[Array[Bytes,Integer]]

Encodes a list of traces in chunks. Before serializing, all traces are normalized. Trace nesting is not changed.



68
69
70
71
72
73
74
75
76
# File 'lib/datadog/tracing/transport/traces.rb', line 68

def encode_in_chunks(traces)
  encoded_traces = Core::Utils::Array.filter_map(traces) do |trace|
    encode_one(trace)
  end

  Datadog::Core::Chunker.chunk_by_size(encoded_traces, max_size).map do |chunk|
    [encoder.join(chunk), chunk.size]
  end
end