Wire up trigger points for automatic reviewer assignment (3c/3)
Summary
Triggers MergeRequests::AutoAssignReviewersWorker from the three places an MR can become eligible for reviewer assignment:
- CreateService (
after_create) forwards anenqueue_auto_reviewer_assignmentflag (derived from the project setting) intoSyncCodeOwnerApprovalRulesWorker, so the enqueue happens after code owner rules are synced. - SyncCodeOwnerApprovalRules calls
perform_asyncwhen that flag is set, covering both sync and async rule sync paths. - UpdateService (
handle_draft_state_change) enqueues when the MR transitions from draft to ready, gated on the same setting predicate.
All enqueue sites are gated on issuable.reviewer_auto_assignment_enabled? so no Sidekiq work is queued when the feature is off.
Part 3c of 3 for CODEOWNERS automatic reviewer assignment. Requires 3a (setting predicate) and 3b (worker) to be merged first.
Related
- Parent issue: #589700
- Previously combined in: !224178 (closed) (now split)
- Part 1 (DB): !224175 (merged)
- Part 2 (Service): !224176 (merged)
- Part 3a (Settings toggle): !232619 (merged)
- Part 3b (Worker): !232620 (merged)
Test plan
-
bundle exec rspec ee/spec/services/ee/merge_requests/create_service_spec.rb -
bundle exec rspec ee/spec/services/ee/merge_requests/update_service_spec.rb -
bundle exec rspec ee/spec/services/merge_requests/sync_code_owner_approval_rules_spec.rb - Create an MR in a project with the toggle on: worker enqueues after code owner sync
- Mark a draft MR ready: worker enqueues once
- Toggle off: no enqueues from any path
Edited by Marc Shaw