Use persisted version of methods that lead to Gitaly find_commit RPCs for the MR widget

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

  • Close this issue

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 instead MergeRequest#target_branch_head.
  • I believe we can use MergeRequest#diff_head_commit instead MergeRequest#source_branch_head.

Still not sure about a caching solution on Ci::Pipeline#latest?.

cc @smcgivern

Edited Sep 26, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading