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 an enqueue_auto_reviewer_assignment flag (derived from the project setting) into SyncCodeOwnerApprovalRulesWorker, so the enqueue happens after code owner rules are synced.
  • SyncCodeOwnerApprovalRules calls perform_async when 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.

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

Merge request reports

Loading