Fix Members::BaseService to work properly with transactions
What does this MR do?
Fix Members::BaseService to work properly with transactions
We shouldn't schedule Sidekiq jobs directly during service
execution. Instead we should postpone it to after_commit
block where possible.
This will allow running Members services in a transaction without getting Sidekiq::Worker::EnqueueFromTransactionError
. E.g.:
ActiveRecord::Base.transaction do
Members::DestroyService.new(User.last).execute(Member.last)
end
What are the relevant issue numbers?
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated via this MR -
Documentation reviewed by technical writer or follow-up review issue created -
Tests added for this feature/bug -
Tested in all supported browsers -
Conforms to the code review guidelines -
Conforms to the merge request performance guidelines -
Conforms to the style guides -
Conforms to the database guides -
Link to e2e tests MR added if this MR has Requires e2e tests label. See the Test Planning Process. -
Security reports checked/validated by reviewer
Edited by Pavel Shutsin