Use persisted version of methods that lead to Gitaly find_commit RPCs for the MR widget
These are the current calls that requests Gitaly's find_commit
on MergeRequestsController#show.json
(widget endpoint):
Stacktraces
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/repository.rb:999:in `find_commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/repository.rb:106:in `commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/project.rb:532:in `commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/ci/pipeline.rb:394:in `latest?'"
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/repository.rb:999:in `find_commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/repository.rb:106:in `commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:449:in `block in source_branch_head'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/lib/gitlab/utils/strong_memoize.rb:26:in `strong_memoize'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:447:in `source_branch_head'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:694:in `can_remove_source_branch?'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/repository.rb:996:in `find_commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/repository.rb:106:in `commit'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:456:in `block in target_branch_head'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/lib/gitlab/utils/strong_memoize.rb:26:in `strong_memoize'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:455:in `target_branch_head'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:470:in `target_branch_sha'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:974:in `diverged_commits_count'",
"/Users/osw/projects/gitlab/gitlab-development-kit/gitlab/app/models/merge_request.rb:995:in `diverged_from_target_branch?'"
Instead fetching the repo:
- I believe we can use
MergeRequest#diff_start_commit
insteadMergeRequest#target_branch_head
. - I believe we can use
MergeRequest#diff_head_commit
insteadMergeRequest#source_branch_head
.
Still not sure about a caching solution on Ci::Pipeline#latest?
.
cc @smcgivern