API::Branches ':id/repository/branches' is calling Gitaly n+1 times per request
API::Branches ':id/repository/branches'
is calling Gitaly n+1
times per request.
This code needs to be refactored to fetch all required information in a single batched Gitaly call.
Known Problem Methods
-
lib/api/entities.rb#Branch
->app/models/repository.rb#merged_to_root_ref?
->app/models/repository.rb#commit
->Gitlab::Git::Commit#find
-
lib/api/entities.rb#Branch
->app/models/repository.rb#merged_to_root_ref?
->Gitlab::Git::Branch#find
->app/models/repository.rb#find_branch
->Gitlab::Git::Repository#find_branch
Failing tests:
rspec ./spec/requests/api/branches_spec.rb:60
rspec ./spec/requests/api/v3/branches_spec.rb:15
Stacks
lib/gitlab/gitaly_client.rb:143:in `migrate'
lib/gitlab/git/repository.rb:1110:in `gitaly_migrate'
lib/gitlab/git/commit.rb:63:in `find'
app/models/repository.rb:108:in `commit'
app/models/repository.rb:913:in `merged_to_root_ref?'
lib/api/entities.rb:251:in `block (2 levels) in <class:Branch>'
lib/api/entities.rb:250:in `block in <class:Branch>'
lib/gitlab/gitaly_client.rb:163:in `migrate'
lib/gitlab/git/repository.rb:1177:in `gitaly_migrate'
lib/gitlab/git/repository.rb:153:in `find_branch'
app/models/repository.rb:168:in `find_branch'
lib/gitlab/git/branch.rb:10:in `find'
app/models/repository.rb:906:in `merged_to_root_ref?'
lib/api/entities.rb:247:in `block in \u003cclass:Branch\u003e'
Edited by Rémy Coutable