class Datadog::Tracing::Flush::Base

@abstract
unaffected.
removed from trace_op as a side effect. Unfinished spans are
Only finished spans are consumed. Any spans consumed are
the provided {TraceSegment}.
Consumes and returns a {TraceSegment} to be flushed, from

def consume!(trace_op)

Returns:
  • (TraceSegment) - trace to be flushed, or +nil+ if the trace is not finished

Parameters:
  • trace_op (TraceOperation) --
def consume!(trace_op)
  return unless flush?(trace_op)
  get_trace(trace_op)
end

def flush?(trace_op)

Other tags:
    Abstract: -
def flush?(trace_op)
  raise NotImplementedError
end

def get_trace(trace_op)

Returns:
  • (TraceSegment) -
def get_trace(trace_op)
  trace_op.flush! do |spans|
    spans.select! { |span| single_sampled?(span) } unless trace_op.sampled?
    spans
  end
end

def single_sampled?(span)

regardless of the trace-level sampling decision
Single Span Sampling has chosen to keep this span
def single_sampled?(span)
  span.get_metric(Sampling::Span::Ext::TAG_MECHANISM) == Sampling::Ext::Mechanism::SPAN_SAMPLING_RATE
end