diff --git a/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/railtie.rb b/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/railtie.rb index 54c47658a5..630aa1e11e 100644 --- a/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/railtie.rb +++ b/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/railtie.rb @@ -11,21 +11,9 @@ module ActionPack class Railtie < ::Rails::Railtie config.before_initialize do |app| OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.install({}) - - stability_opt_in = ENV.fetch('OTEL_SEMCONV_STABILITY_OPT_IN', '') - values = stability_opt_in.split(',').map(&:strip) - - rack_middleware_args = if values.include?('http/dup') - OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_dup - elsif values.include?('http') - OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_stable - else - OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args - end - app.middleware.insert_before( 0, - *rack_middleware_args + *OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args ) end end diff --git a/instrumentation/rack/lib/opentelemetry/instrumentation/rack/instrumentation.rb b/instrumentation/rack/lib/opentelemetry/instrumentation/rack/instrumentation.rb index 9c3dc10b81..2089db4284 100644 --- a/instrumentation/rack/lib/opentelemetry/instrumentation/rack/instrumentation.rb +++ b/instrumentation/rack/lib/opentelemetry/instrumentation/rack/instrumentation.rb @@ -32,6 +32,11 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base # This option is only valid for applications using Rack 2.0 or greater option :use_rack_events, default: true, validate: :boolean + def middleware_args + patch_type = determine_semconv + send(:"middleware_args_#{patch_type}") + end + # Temporary Helper for Sinatra and ActionPack middleware to use during installation # # @example Default usage @@ -40,7 +45,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base # run lambda { |_arg| [200, { 'Content-Type' => 'text/plain' }, body] } # end # @return [Array] consisting of a middleware and arguments used in rack builders - def middleware_args + def middleware_args_old if config.fetch(:use_rack_events, false) == true && defined?(OpenTelemetry::Instrumentation::Rack::Middlewares::Old::EventHandler) [::Rack::Events, [OpenTelemetry::Instrumentation::Rack::Middlewares::Old::EventHandler.new]] else @@ -48,8 +53,6 @@ def middleware_args end end - alias middleware_args_old middleware_args - def middleware_args_dup if config.fetch(:use_rack_events, false) == true && defined?(OpenTelemetry::Instrumentation::Rack::Middlewares::Dup::EventHandler) [::Rack::Events, [OpenTelemetry::Instrumentation::Rack::Middlewares::Dup::EventHandler.new]] diff --git a/instrumentation/sinatra/lib/opentelemetry/instrumentation/sinatra/instrumentation.rb b/instrumentation/sinatra/lib/opentelemetry/instrumentation/sinatra/instrumentation.rb index b1ed53e7a7..bd7b85ad60 100644 --- a/instrumentation/sinatra/lib/opentelemetry/instrumentation/sinatra/instrumentation.rb +++ b/instrumentation/sinatra/lib/opentelemetry/instrumentation/sinatra/instrumentation.rb @@ -51,19 +51,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base end def install_middleware(app) - if config[:install_rack] - stability_opt_in = ENV.fetch('OTEL_SEMCONV_STABILITY_OPT_IN', '') - values = stability_opt_in.split(',').map(&:strip) - - if values.include?('http/dup') - app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_dup) - elsif values.include?('http') - app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_stable) - else - app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args) - end - end - + app.use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args) if config[:install_rack] app.use(Middlewares::TracerMiddleware) end end diff --git a/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_dup_http_test.rb b/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_dup_http_test.rb index 332edc4762..bf75b7265a 100644 --- a/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_dup_http_test.rb +++ b/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_dup_http_test.rb @@ -219,7 +219,7 @@ class CustomError < StandardError; end let(:app) do apps_to_build = apps Rack::Builder.new do - use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_dup) + use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args) apps_to_build.each do |root, app| map root do diff --git a/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_stable_http_test.rb b/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_stable_http_test.rb index 0d0313e395..150ab5d427 100644 --- a/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_stable_http_test.rb +++ b/instrumentation/sinatra/test/opentelemetry/instrumentation/sinatra_stable_http_test.rb @@ -199,7 +199,7 @@ class CustomError < StandardError; end let(:app) do apps_to_build = apps Rack::Builder.new do - use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args_stable) + use(*OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.middleware_args) apps_to_build.each do |root, app| map root do