module BaselineRedRpm::Instruments::FaradayConnection

Public Instance Methods

run_request_with_trace(method, url, body, headers, &block) click to toggle source
# File lib/baseline_red_rpm/instruments/faraday.rb, line 6
def run_request_with_trace(method, url, body, headers, &block)
  if ::BaselineRedRpm::Tracer.tracing?
    span = ::BaselineRedRpm.tracer.start_span("faraday", tags: {
      "component" => "Faraday",
      "span.kind" => "client"
    })
    BaselineRedRpm.tracer.inject(span.context, OpenTracing::FORMAT_RACK, @headers)
    result = run_request_without_trace(method, url, body, headers, &block)
    span.set_tag "middleware", @builder.handlers
    span.set_tag "peer.hostname", @url_prefix.host
    span.set_tag "peer.port", @url_prefix.port
    span.set_tag "http.protocol", @url_prefix.scheme
    span.set_tag "http.url", url
    span.set_tag "http.method", method
    span.set_tag "http.status_code", result.status
    BaselineRedRpm::Utils.log_source_and_backtrace(span, :faraday)
    span.finish
  else
    result = run_request_without_trace(method, url, body, headers, &block)
  end
  result
rescue Exception => e
  if span
    span.set_tag('error', true)
    span.log_error(e)
  end
  raise
ensure
  span.finish if span
end