Skip to content

Commit

Permalink
feat: Faraday Minimum v1.0 (#1267)
Browse files Browse the repository at this point in the history
* fix: Share Faraday Attrs with Adapter Spans

The Faraday gem has additional http attributes that are sometimes missing or difficult to derive in Adapter instrumentations.

* feat: Faraday Minimum v1.0

Faraday pre-1.0 is no longer receiving updates.

---------

Co-authored-by: Kayla Reopelle <[email protected]>
  • Loading branch information
arielvalentin and kaylareopelle authored Jan 6, 2025
1 parent 4f926f1 commit 97955b0
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 33 deletions.
2 changes: 1 addition & 1 deletion instrumentation/faraday/Appraisals
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#
# SPDX-License-Identifier: Apache-2.0

%w[0.17.6 1.0 2.0].each do |version|
%w[1.0 2.0].each do |version|
appraise "faraday-#{version}" do
gem 'faraday', "~> #{version}"
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,18 @@ module Faraday
# The Instrumentation class contains logic to detect and install the Faraday
# instrumentation
class Instrumentation < OpenTelemetry::Instrumentation::Base
MINIMUM_VERSION = Gem::Version.new('1.0')

install do |_config|
require_dependencies
register_tracer_middleware
use_middleware_by_default
end

compatible do
gem_version >= MINIMUM_VERSION
end

present do
defined?(::Faraday)
end
Expand All @@ -25,10 +31,13 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base

private

def gem_version
Gem::Version.new(::Faraday::VERSION)
end

def require_dependencies
require_relative 'middlewares/tracer_middleware'
require_relative 'patches/connection'
require_relative 'patches/rack_builder'
end

def register_tracer_middleware
Expand All @@ -38,11 +47,7 @@ def register_tracer_middleware
end

def use_middleware_by_default
if Gem::Version.new(::Faraday::VERSION) >= Gem::Version.new('1')
::Faraday::Connection.prepend(Patches::Connection)
else
::Faraday::RackBuilder.prepend(Patches::RackBuilder)
end
::Faraday::Connection.prepend(Patches::Connection)
end
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ module Patches
module Connection
# Wraps Faraday::Connection#initialize:
# https://github.com/lostisland/faraday/blob/ff9dc1d1219a1bbdba95a9a4cf5d135b97247ee2/lib/faraday/connection.rb#L62-L92
def initialize(*args)
def initialize(...)
super.tap do
use(:open_telemetry) unless builder.handlers.any? do |handler|
handler.klass == Middlewares::TracerMiddleware
Expand Down

This file was deleted.

0 comments on commit 97955b0

Please sign in to comment.