Sha256: 233c7c1d6ffccd4dc534feaa31e9d338ee2fd3824086d7fbe54ef8f032d211e5

Contents?: true

Size: 1.63 KB

Versions: 11

Compression:

Stored size: 1.63 KB

Contents

require 'ddtrace/ext/net'
require 'ddtrace/runtime/socket'
require 'ddtrace/runtime/metrics'

module Datadog
  # SyncWriter flushes both services and traces synchronously
  class SyncWriter
    attr_reader \
      :runtime_metrics,
      :transport

    def initialize(options = {})
      @transport = options.fetch(:transport) do
        transport_options = options.fetch(:transport_options, {})
        Transport::HTTP.default(transport_options)
      end

      # Runtime metrics
      @runtime_metrics = options.fetch(:runtime_metrics) do
        Runtime::Metrics.new
      end
    end

    def write(trace, services = nil)
      unless services.nil?
        Datadog::Patcher.do_once('SyncWriter#write') do
          Datadog::Tracer.log.warn(%(
            write: Writing services has been deprecated and no longer need to be provided.
            write(traces, services) can be updted to write(traces)
          ))
        end
      end

      perform_concurrently(
        proc { flush_trace(trace) }
      )
    rescue => e
      Tracer.log.debug(e)
    end

    private

    def perform_concurrently(*tasks)
      tasks.map { |task| Thread.new(&task) }.each(&:join)
    end

    def flush_trace(trace)
      processed_traces = Pipeline.process!([trace])
      inject_hostname!(processed_traces.first) if Datadog.configuration.report_hostname
      transport.send(:traces, processed_traces)
    end

    def inject_hostname!(trace)
      unless trace.first.nil?
        hostname = Datadog::Runtime::Socket.hostname
        unless hostname.nil? || hostname.empty?
          trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname)
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
ls-trace-0.1.2 lib/ddtrace/sync_writer.rb
ddtrace-0.30.0 lib/ddtrace/sync_writer.rb
ddtrace-0.29.1 lib/ddtrace/sync_writer.rb
ddtrace-0.26.1 lib/ddtrace/sync_writer.rb
ls-trace-0.1.1 lib/ddtrace/sync_writer.rb
ddtrace-0.29.0 lib/ddtrace/sync_writer.rb
ddtrace-0.28.0 lib/ddtrace/sync_writer.rb
ddtrace-0.27.0 lib/ddtrace/sync_writer.rb
ddtrace-0.26.0 lib/ddtrace/sync_writer.rb
ddtrace-0.25.1 lib/ddtrace/sync_writer.rb
ddtrace-0.25.0 lib/ddtrace/sync_writer.rb