Class: Datadog::Tracing::Transport::Traces::Chunker
- Inherits:
-
Object
- Object
- Datadog::Tracing::Transport::Traces::Chunker
- 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
-
#encoder ⇒ Object
readonly
Returns the value of attribute encoder.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#max_size ⇒ Object
readonly
Returns the value of attribute max_size.
Instance Method Summary collapse
-
#encode_in_chunks(traces) ⇒ Enumerable[Array[Bytes,Integer]]
Encodes a list of traces in chunks.
-
#initialize(encoder, logger:, native_events_supported:, max_size: DEFAULT_MAX_PAYLOAD_SIZE) ⇒ Chunker
constructor
Single traces larger than
max_sizewill be discarded.
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
#encoder ⇒ Object (readonly)
Returns the value of attribute encoder.
47 48 49 |
# File 'lib/datadog/tracing/transport/traces.rb', line 47 def encoder @encoder end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
47 48 49 |
# File 'lib/datadog/tracing/transport/traces.rb', line 47 def logger @logger end |
#max_size ⇒ Object (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 |