getappmap / appmap-ruby

AppMap client agent for Ruby
https://appland.org
Other
100 stars 13 forks source link

Apparently broken handling of arguments in Ruby 3.1 in some corner cases #315

Closed dividedmind closed 1 year ago

dividedmind commented 1 year ago

I've encountered a weird error caused by AppMap after migrating to 3.1 in appmap-server. I have yet to reproduce it minimally at which point I'll replace this issue with something more concrete, but in the meantime I didn't want this to get lost.

It might be related to ActiveJob (note backtrace is as-in commit d754073947969a08a994dbe0943727a97d153072 of the appmap-server.)

  1) OrgInvitations creation works when creating a new invitation
     Got 1 failure and 1 other error:

     1.1) Failure/Error:
            def new_org_invitation(invitation, url)
              parsed_invitation = JSON.parse invitation
              @url = url
              @org_name = parsed_invitation['org_name']
              mail to: parsed_invitation['email'], subject: "AppLand - You are invited to join organization #{@org_name.inspect}"
            end

          Minitest::UnexpectedError:
            ArgumentError: wrong number of arguments (given 1, expected 2)
                /home/runner/work/appmap-server/appmap-server/app/mailers/org_invitation_mailer.rb:6:in `new_org_invitation'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:40:in `bind_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:40:in `do_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:49:in `trace_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:16:in `call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:63:in `block in hook_method_def'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionpack-6.1.4.1/lib/abstract_controller/base.rb:228:in `process_action'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:98:in `run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionpack-6.1.4.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionpack-6.1.4.1/lib/abstract_controller/base.rb:165:in `process'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/rescuable.rb:25:in `block in process'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/rescuable.rb:17:in `handle_exceptions'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/rescuable.rb:24:in `process'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionview-6.1.4.1/lib/action_view/rendering.rb:39:in `process'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/base.rb:615:in `block in process'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `block in instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/base.rb:614:in `process'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:128:in `block in processed_mailer'
                <internal:kernel>:90:in `tap'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:127:in `processed_mailer'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:118:in `deliver_now'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/delivery_job.rb:24:in `perform'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/execution.rb:48:in `block in perform_now'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/i18n-1.12.0/lib/i18n.rb:322:in `with_locale'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/time/zones.rb:66:in `use_zone'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/instrumentation.rb:21:in `block in instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `block in instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/instrumentation.rb:31:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/instrumentation.rb:14:in `block (2 levels) in <module:Instrumentation>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/logging.rb:22:in `block in tag_logger'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/tagged_logging.rb:99:in `block in tagged'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/tagged_logging.rb:37:in `tagged'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/tagged_logging.rb:99:in `tagged'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/logging.rb:22:in `tag_logger'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/logging.rb:15:in `block (2 levels) in <module:Logging>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:137:in `run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/execution.rb:47:in `perform_now'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:40:in `bind_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:40:in `do_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:49:in `trace_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:16:in `call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:63:in `block in hook_method_def'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/execution.rb:25:in `block in execute'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/railtie.rb:47:in `block (4 levels) in <class:Railtie>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/execution_wrapper.rb:88:in `wrap'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/reloader.rb:72:in `block in wrap'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/execution_wrapper.rb:84:in `wrap'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/reloader.rb:71:in `wrap'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/railtie.rb:46:in `block (3 levels) in <class:Railtie>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:137:in `run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/execution.rb:23:in `execute'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/queue_adapters/test_adapter.rb:50:in `perform_or_enqueue'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/queue_adapters/test_adapter.rb:30:in `enqueue'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/enqueuing.rb:59:in `block in enqueue'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:117:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/instrumentation.rb:21:in `block in instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `block in instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/notifications.rb:203:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/instrumentation.rb:31:in `instrument'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/instrumentation.rb:9:in `block (2 levels) in <module:Instrumentation>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/logging.rb:22:in `block in tag_logger'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/tagged_logging.rb:99:in `block in tagged'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/tagged_logging.rb:37:in `tagged'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/tagged_logging.rb:99:in `tagged'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/logging.rb:22:in `tag_logger'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/logging.rb:14:in `block (2 levels) in <module:Logging>'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `instance_exec'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:126:in `block in run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activesupport-6.1.4.1/lib/active_support/callbacks.rb:137:in `run_callbacks'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/enqueuing.rb:55:in `enqueue'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:40:in `bind_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:40:in `do_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:49:in `trace_call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:16:in `call'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/bundler/gems/appmap-ruby-745f9748d909/lib/appmap/hook/method/ruby3.rb:63:in `block in hook_method_def'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/activejob-6.1.4.1/lib/active_job/configured_job.rb:16:in `perform_later'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:146:in `enqueue_delivery'
                /home/runner/work/appmap-server/appmap-server/vendor/bundle/ruby/3.1.0/gems/actionmailer-6.1.4.1/lib/action_mailer/message_delivery.rb:99:in `deliver_later'
                /home/runner/work/appmap-server/appmap-server/app/controllers/organizations_controller.rb:27:in `invite'
dividedmind commented 1 year ago

The problem was found to not actually be related to AppMap.