Background worker for suggested reviewers
What does this MR do and why?
Backrground worker for suggested reviewers service
Why jsonb in merge requests table
The reviewers are calculated using machine learning inference.
- We don't call the service online from gitlab as it can take a long time >
1 second
and it's not observed. - A jsonb column is a good choice for pre-fetched values because it scales better than redis as we rollout to projects.
- Also the schema can change with new machine learning improvements.
Migration
$ bin/rails db:migrate:up:main VERSION=20220915140802
main: == 20220915140802 CreateMergeRequestPredictions: migrating ====================
main: -- create_table(:merge_request_predictions, {:id=>false})
main: -> 0.0102s
main: == 20220915140802 CreateMergeRequestPredictions: migrated (0.0106s) ===========
$ bin/rails db:migrate:down:main VERSION=20220915140802
main: == 20220915140802 CreateMergeRequestPredictions: reverting ====================
main: -- drop_table(:merge_request_predictions)
main: -> 0.0022s
main: == 20220915140802 CreateMergeRequestPredictions: reverted (0.0026s) ===========
How to set up and validate locally
mr = MergeRequest.last
MergeRequests::FetchSuggestedReviewersWorker.new.perform(mr.id)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Related to #373173 (closed)
Edited by Alper Akgun