Devise ActiveJob integration broken
The change I made in !3902 (merged) broke devise mailers being sent. I'm not sure why tests didn't catch this, but we'll have to revert back to devise-async until we can update Devise (blocked by devise-two-factor at present).
The error matches this issue exactly: https://github.com/plataformatec/devise/issues/3550
Reproduction steps:
- Start a GitLab instance with the master branch
- Try to create a new account
- Confirmation email fails with the following error
15:14:48 rails-background-jobs.1 | 2016-05-03T21:14:48.685Z 57829 TID-ox5zovs8w ActionMailer::DeliveryJob JID-bc0bb8687e2359b987f4552a INFO: start
15:14:48 rails-background-jobs.1 | 2016-05-03T21:14:48.723Z 57829 TID-ox5zovs8w ActionMailer::DeliveryJob JID-bc0bb8687e2359b987f4552a INFO: fail: 0.037 sec
15:14:48 rails-background-jobs.1 | 2016-05-03T21:14:48.723Z 57829 TID-ox5zovs8w WARN: {"class"=>"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper", "wrapped"=>"ActionMailer::DeliveryJob", "queue"=>"mailers", "args"=>[{"job_class"=>"ActionMailer::DeliveryJob", "job_id"=>"42ec24e1-0891-4147-8024-ac638168ef64", "queue_name"=>"mailers", "arguments"=>["DeviseMailer", "confirmation_instructions", "deliver_now", {"_aj_globalid"=>"gid://gitlab/User/1"}, "Th5fyLD2Sujsiid4_iBy", {"_aj_symbol_keys"=>[]}], "locale"=>"en"}], "retry"=>true, "jid"=>"bc0bb8687e2359b987f4552a", "created_at"=>1462310088.682008, "enqueued_at"=>1462310088.682307, "error_message"=>"Error while trying to deserialize arguments: Couldn't find User with 'id'=1", "error_class"=>"ActiveJob::DeserializationError", "failed_at"=>1462310088.722815, "retry_count"=>0}
15:14:48 rails-background-jobs.1 | 2016-05-03T21:14:48.723Z 57829 TID-ox5zovs8w WARN: ActiveJob::DeserializationError: Error while trying to deserialize arguments: Couldn't find User with 'id'=1
15:14:48 rails-background-jobs.1 | 2016-05-03T21:14:48.723Z 57829 TID-ox5zovs8w WARN: /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:324:in `raise_record_not_found_exception!'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:444:in `find_one'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:423:in `find_with_ids'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/relation/finder_methods.rb:71:in `find'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/querying.rb:3:in `find'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/core.rb:131:in `find'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/globalid-0.3.6/lib/global_id/locator.rb:132:in `locate'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/globalid-0.3.6/lib/global_id/locator.rb:158:in `block in locate'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/scoping/default.rb:33:in `block in unscoped'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/relation.rb:302:in `scoping'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activerecord-4.2.6/lib/active_record/scoping/default.rb:33:in `unscoped'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/globalid-0.3.6/lib/global_id/locator.rb:158:in `locate'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/globalid-0.3.6/lib/global_id/locator.rb:17:in `locate'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/arguments.rb:97:in `deserialize_global_id'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/arguments.rb:83:in `deserialize_argument'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/arguments.rb:40:in `block in deserialize'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/arguments.rb:40:in `map'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/arguments.rb:40:in `deserialize'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/core.rb:90:in `deserialize_arguments'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/core.rb:80:in `deserialize_arguments_if_needed'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/execution.rb:30:in `perform_now'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/execution.rb:21:in `execute'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/activejob-4.2.6/lib/active_job/queue_adapters/sidekiq_adapter.rb:42:in `perform'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:151:in `execute_job'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:133:in `block (2 levels) in process'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/chain.rb:127:in `block in invoke'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/server/active_record.rb:6:in `call'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/chain.rb:129:in `block in invoke'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/server/retry_jobs.rb:74:in `call'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/chain.rb:129:in `block in invoke'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/server/logging.rb:11:in `block in call'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/logging.rb:31:in `with_context'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/server/logging.rb:7:in `call'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/chain.rb:129:in `block in invoke'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/chain.rb:132:in `call'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/middleware/chain.rb:132:in `invoke'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:128:in `block in process'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:167:in `stats'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:127:in `process'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:79:in `process_one'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/processor.rb:67:in `run'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/util.rb:16:in `watchdog'
15:14:48 rails-background-jobs.1 | /Users/connor/.rvm/gems/ruby-2.1.8/gems/sidekiq-4.1.1/lib/sidekiq/util.rb:24:in `block in safe_thread'
I'll open an MR reverting that commit in a bit, apologies for not noticing that. I only tested with an account that already existed, so the problem didn't pop up.