scoutapp / scout_apm_ruby

ScoutAPM Ruby Agent. Supports Rails, Sinatra, Grape, Rack, and many other frameworks

Home Page:https://scoutapm.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Scout broken on Rails Master due to change on `log` in `abstract_adapter`

brenogazzola opened this issue · comments

Hello there. We are using Scout and Rails Master on production and just stumbled into a problem caused by, I believe, Rails PR 40037.

This PR added the load_async methods in order to allow multiple queries to run in the background at the same time. It also changed the signature of the log method in the abstract_adpater which Scout seems to rely on. The error message we are seeing is wrong number of arguments (given 6, expected 1..5). Below I have added the full stack trace.

The cause seems to be the file scout_apm/instruments/active_record.rb which calls rails log (which was modified) on line 256.

Disabling Scout solved the problem for us.

irb(main):001:1* begin
irb(main):002:1*   Website.last
irb(main):003:1* rescue => e
irb(main):004:1*   puts e.backtrace
irb(main):005:1* end
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:697:in `log'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/scout_apm-4.0.4/lib/scout_apm/instruments/active_record.rb:256:in `log'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:688:in `exec_cache'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb:654:in `execute_and_clear'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb:51:in `exec_query'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:547:in `select'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:66:in `select_all'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:110:in `select_all'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/querying.rb:51:in `_query_by_sql'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:923:in `block in exec_main_query'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:945:in `skip_query_cache_if_necessary'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:909:in `exec_main_query'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:895:in `block in exec_queries'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:945:in `skip_query_cache_if_necessary'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:889:in `exec_queries'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/scout_apm-4.0.4/lib/scout_apm/instruments/active_record.rb:381:in `exec_queries'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:683:in `load'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:254:in `records'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation.rb:249:in `to_ary'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation/finder_methods.rb:562:in `find_nth_with_limit'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation/finder_methods.rb:547:in `find_nth'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation/finder_methods.rb:148:in `first'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/relation/finder_methods.rb:179:in `last'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/activerecord/lib/active_record/querying.rb:22:in `last'
(irb):2:in `<main>'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/workspace.rb:116:in `eval'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/workspace.rb:116:in `evaluate'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/context.rb:450:in `evaluate'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:557:in `block (2 levels) in eval_input'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:721:in `signal_status'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:538:in `block in eval_input'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/ruby-lex.rb:186:in `block (2 levels) in each_top_level_statement'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/ruby-lex.rb:171:in `loop'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/ruby-lex.rb:171:in `block in each_top_level_statement'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/ruby-lex.rb:170:in `catch'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb/ruby-lex.rb:170:in `each_top_level_statement'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:537:in `eval_input'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:472:in `block in run'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:471:in `catch'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:471:in `run'
/home/app/.rbenv/versions/3.0.0/lib/ruby/3.0.0/irb.rb:400:in `start'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/railties/lib/rails/commands/console/console_command.rb:70:in `start'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/railties/lib/rails/commands/console/console_command.rb:19:in `start'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/railties/lib/rails/commands/console/console_command.rb:102:in `perform'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/thor-1.1.0/lib/thor/command.rb:27:in `run'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/thor-1.1.0/lib/thor/invocation.rb:127:in `invoke_command'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/thor-1.1.0/lib/thor.rb:392:in `dispatch'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/railties/lib/rails/command/base.rb:69:in `perform'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/railties/lib/rails/command.rb:50:in `invoke'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/bundler/gems/rails-ab8e3d22cbac/railties/lib/rails/commands.rb:18:in `<main>'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/home/app/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/bootsnap-1.7.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
bin/rails:4:in `<main>'