excon.rb

Path: lib/new_relic/agent/instrumentation/excon.rb
Last Update: Wed Feb 15 06:29:35 +0000 2017

encoding: utf-8 This file is distributed under New Relic‘s license terms. See github.com/newrelic/rpm/blob/master/LICENSE for complete details.

Required files

new_relic/agent/cross_app_tracing   new_relic/agent/http_clients/excon_wrappers   new_relic/agent/instrumentation/excon/middleware   new_relic/agent/instrumentation/excon/connection  

Methods

Constants

EXCON_MIN_VERSION = ::NewRelic::VersionNumber.new("0.10.1")   We have two ways of instrumenting Excon:
  • For newer versions, use the middleware mechanism Excon exposes
  • For older versions, monkey-patch Excon::Connection#request

EXCON_MIN_VERSION is the minimum version we attempt to instrument at all. EXCON_MIDDLEWARE_MIN_VERSION is the min version we use the newer

  instrumentation for.

Note that middlewares were added to Excon prior to 0.19, but we don‘t use middleware-based instrumentation prior to that version because it didn‘t expose a way for middlewares to know about request failures.

Why don‘t we use Excon.defaults[:instrumentor]? While this might seem a perfect fit, it unfortunately isn‘t suitable in current form. Someone might reasonably set the default instrumentor to something else after we install our instrumentation. Ideally, excon would itself conform to the subscribe interface of ActiveSupport::Notifications, so we could safely subscribe and not be clobbered by future subscribers, but alas, it does not yet.

EXCON_MIDDLEWARE_MIN_VERSION = ::NewRelic::VersionNumber.new("0.19.0")

Public Instance methods

[Validate]