module Datadog::Pipeline

Pipeline

Public Class Methods

before_flush(*processors, &processor_block) click to toggle source
# File lib/ddtrace/pipeline.rb, line 11
def self.before_flush(*processors, &processor_block)
  processors = [processor_block] if processors.empty?

  @mutex.synchronize do
    @processors.concat(processors)
  end
end
process!(traces) click to toggle source
# File lib/ddtrace/pipeline.rb, line 19
def self.process!(traces)
  @mutex.synchronize do
    traces
      .map(&method(:apply_processors!))
      .select(&:any?)
  end
end
processors=(value) click to toggle source
# File lib/ddtrace/pipeline.rb, line 27
def self.processors=(value)
  @processors = value
end

Private Class Methods

apply_processors!(trace) click to toggle source
# File lib/ddtrace/pipeline.rb, line 31
def self.apply_processors!(trace)
  result = @processors.inject(trace) do |current_trace, processor|
    processor.call(current_trace)
  end

  result || []
rescue => e
  Datadog.logger.debug(
    "trace dropped entirely due to `Pipeline.before_flush` error: #{e}"
  )

  []
end