Skip to content

Commit 8a96a78

Browse files
sergiofbsilvaarielvalentinkaylareopelle
authored
fix: unify rack middleware_args (#1660)
* refactor: unify rack middleware_args Ensure rack middleware_args are selected consistently based on `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable. * use only middleware_args in sinatra tests --------- Co-authored-by: Ariel Valentin <arielvalentin@users.noreply.github.com> Co-authored-by: Kayla Reopelle <87386821+kaylareopelle@users.noreply.github.com>
1 parent 9fda92a commit 8a96a78

File tree

5 files changed

+10
-31
lines changed

5 files changed

+10
-31
lines changed

instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/railtie.rb

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,9 @@ module ActionPack
1111
class Railtie < ::Rails::Railtie
1212
config.before_initialize do |app|
1313
OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.install({})
14-
15-
stability_opt_in = ENV.fetch('OTEL_SEMCONV_STABILITY_OPT_IN', '')
16-
values = stability_opt_in.split(',').map(&:strip)
17-
18-
rack_middleware_args = if values.include?('http/dup')
19-
OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_dup
20-
elsif values.include?('http')
21-
OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_stable
22-
else
23-
OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args
24-
end
25-
2614
app.middleware.insert_before(
2715
0,
28-
*rack_middleware_args
16+
*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args
2917
)
3018
end
3119
end

instrumentation/rack/lib/opentelemetry/instrumentation/rack/instrumentation.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base
3232
# This option is only valid for applications using Rack 2.0 or greater
3333
option :use_rack_events, default: true, validate: :boolean
3434

35+
def middleware_args
36+
patch_type = determine_semconv
37+
send(:"middleware_args_#{patch_type}")
38+
end
39+
3540
# Temporary Helper for Sinatra and ActionPack middleware to use during installation
3641
#
3742
# @example Default usage
@@ -40,16 +45,14 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base
4045
# run lambda { |_arg| [200, { 'Content-Type' => 'text/plain' }, body] }
4146
# end
4247
# @return [Array] consisting of a middleware and arguments used in rack builders
43-
def middleware_args
48+
def middleware_args_old
4449
if config.fetch(:use_rack_events, false) == true && defined?(OpenTelemetry::Instrumentation::Rack::Middlewares::Old::EventHandler)
4550
[::Rack::Events, [OpenTelemetry::Instrumentation::Rack::Middlewares::Old::EventHandler.new]]
4651
else
4752
[OpenTelemetry::Instrumentation::Rack::Middlewares::Old::TracerMiddleware]
4853
end
4954
end
5055

51-
alias middleware_args_old middleware_args
52-
5356
def middleware_args_dup
5457
if config.fetch(:use_rack_events, false) == true && defined?(OpenTelemetry::Instrumentation::Rack::Middlewares::Dup::EventHandler)
5558
[::Rack::Events, [OpenTelemetry::Instrumentation::Rack::Middlewares::Dup::EventHandler.new]]

instrumentation/sinatra/lib/opentelemetry/instrumentation/sinatra/instrumentation.rb

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base
5151
end
5252

5353
def install_middleware(app)
54-
if config[:install_rack]
55-
stability_opt_in = ENV.fetch('OTEL_SEMCONV_STABILITY_OPT_IN', '')
56-
values = stability_opt_in.split(',').map(&:strip)
57-
58-
if values.include?('http/dup')
59-
app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_dup)
60-
elsif values.include?('http')
61-
app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_stable)
62-
else
63-
app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args)
64-
end
65-
end
66-
54+
app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args) if config[:install_rack]
6755
app.use(Middlewares::TracerMiddleware)
6856
end
6957
end

instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_dup_http_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class CustomError < StandardError; end
219219
let(:app) do
220220
apps_to_build = apps
221221
Rack::Builder.new do
222-
use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_dup)
222+
use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args)
223223

224224
apps_to_build.each do |root, app|
225225
map root do

instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_stable_http_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ class CustomError < StandardError; end
199199
let(:app) do
200200
apps_to_build = apps
201201
Rack::Builder.new do
202-
use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_stable)
202+
use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args)
203203

204204
apps_to_build.each do |root, app|
205205
map root do

0 commit comments

Comments
 (0)