Ensure when accessing Rails, we really get ::Rails (and not Sidekiq::Rails)
What does this MR do?
This MR addresses an exception that occurs when seeding the DB of a new dev setup. This MR only addresses the NoMethodError: undefined method 'env' for Sidekiq::Rails:Class
exception raised within ./config/initializers/forbid_sidekiq_in_transactions.rb
.
The Use an after_commit hook, or include AfterCommitQueue and use a run_after_commit block instead
error will be handled in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18732.
Are there points in the code the reviewer needs to double check?
N/A
Why was this MR needed?
Without the patch, the follow exception occurs:
== Seed from /Users/ash/src/gdk/gdk-ee/gitlab/db/fixtures/development/20_burndown.rb
.
.
rake aborted!
NoMethodError: undefined method `env' for Sidekiq::Rails:Class
/Users/ash/src/gdk/gdk-ee/gitlab/config/initializers/forbid_sidekiq_in_transactions.rb:30:in `rescue in block (2 levels) in <module:NoEnqueueingFromTransactions>'
/Users/ash/src/gdk/gdk-ee/gitlab/config/initializers/forbid_sidekiq_in_transactions.rb:21:in `block (2 levels) in <module:NoEnqueueingFromTransactions>'
/Users/ash/src/gdk/gdk-ee/gitlab/app/workers/mail_scheduler/notification_service_worker.rb:16:in `perform_async'
/Users/ash/src/gdk/gdk-ee/gitlab/app/services/notification_service.rb:30:in `method_missing'
/Users/ash/src/gdk/gdk-ee/gitlab/app/services/issues/close_service.rb:29:in `close_issue'
/Users/ash/src/gdk/gdk-ee/gitlab/app/services/issues/close_service.rb:7:in `execute'
(eval):69:in `block (2 levels) in close_issues'
(eval):68:in `each'
(eval):68:in `block in close_issues'
(eval):61:in `upto'
(eval):61:in `close_issues'
(eval):19:in `block in seed!'
(eval):12:in `seed!'
(eval):91:in `block (4 levels) in run_file'
(eval):89:in `block (3 levels) in run_file'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/gitlab/seeder.rb:21:in `quiet'
(eval):83:in `block (2 levels) in run_file'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/tasks/gitlab/setup.rake:31:in `setup_db'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/tasks/gitlab/setup.rake:5:in `block (2 levels) in <top (required)>'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/tasks/dev.rake:7:in `block (2 levels) in <top (required)>'
/Users/ash/.rbenv/versions/2.3.7/bin/bundle:22:in `load'
/Users/ash/.rbenv/versions/2.3.7/bin/bundle:22:in `<main>'
Caused by:
Sidekiq::Worker::EnqueueFromTransactionError: `MailScheduler::NotificationServiceWorker.perform_async` cannot be called inside a transaction as this can lead to
race conditions when the worker runs before the transaction is committed and
tries to access a model that has not been saved yet.
Use an `after_commit` hook, or include `AfterCommitQueue` and use a `run_after_commit` block instead.
/Users/ash/src/gdk/gdk-ee/gitlab/config/initializers/forbid_sidekiq_in_transactions.rb:22:in `block (2 levels) in <module:NoEnqueueingFromTransactions>'
/Users/ash/src/gdk/gdk-ee/gitlab/app/workers/mail_scheduler/notification_service_worker.rb:16:in `perform_async'
/Users/ash/src/gdk/gdk-ee/gitlab/app/services/notification_service.rb:30:in `method_missing'
/Users/ash/src/gdk/gdk-ee/gitlab/app/services/issues/close_service.rb:29:in `close_issue'
/Users/ash/src/gdk/gdk-ee/gitlab/app/services/issues/close_service.rb:7:in `execute'
(eval):69:in `block (2 levels) in close_issues'
(eval):68:in `each'
(eval):68:in `block in close_issues'
(eval):61:in `upto'
(eval):61:in `close_issues'
(eval):19:in `block in seed!'
(eval):12:in `seed!'
(eval):91:in `block (4 levels) in run_file'
(eval):89:in `block (3 levels) in run_file'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/gitlab/seeder.rb:21:in `quiet'
(eval):83:in `block (2 levels) in run_file'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/tasks/gitlab/setup.rake:31:in `setup_db'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/tasks/gitlab/setup.rake:5:in `block (2 levels) in <top (required)>'
/Users/ash/src/gdk/gdk-ee/gitlab/lib/tasks/dev.rake:7:in `block (2 levels) in <top (required)>'
/Users/ash/.rbenv/versions/2.3.7/bin/bundle:22:in `load'
/Users/ash/.rbenv/versions/2.3.7/bin/bundle:22:in `<main>'
Tasks: TOP => db:seed_fu
(See full trace by running task with --trace)
./support/bootstrap-rails failed
Screenshots (if relevant)
N/A
Does this MR meet the acceptance criteria?
[ ] Changelog entry added, if necessary[ ] Documentation created/updated[ ] API support added[ ] Tests added for this feature/bug- Review
[ ] Has been reviewed by UX[ ] Has been reviewed by Frontend-
Has been reviewed by Backend [ ] Has been reviewed by Database
-
Conform by the merge request performance guides -
Conform by the style guides -
Squashed related commits together [ ] Internationalization required/considered[ ] End-to-end tests pass (package-and-qa
manual pipeline job)
What are the relevant issue numbers?
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/18732
Edited by Ash McKenzie