Merge branch '44861-mark-gitaly-nplus-one-again' into 'master'
Re-enable allowing n+1 Gitaly for branches index Closes #44861 See merge request gitlab-org/gitlab-ce!18131
This commit is contained in:
commit
e3e461fbe1
2 changed files with 24 additions and 4 deletions
|
@ -22,10 +22,14 @@ class Projects::BranchesController < Projects::ApplicationController
|
|||
|
||||
@refs_pipelines = @project.pipelines.latest_successful_for_refs(@branches.map(&:name))
|
||||
@merged_branch_names = repository.merged_branch_names(@branches.map(&:name))
|
||||
|
||||
# n+1: https://gitlab.com/gitlab-org/gitaly/issues/992
|
||||
Gitlab::GitalyClient.allow_n_plus_1_calls do
|
||||
@max_commits = @branches.reduce(0) do |memo, branch|
|
||||
diverging_commit_counts = repository.diverging_commit_counts(branch)
|
||||
[memo, diverging_commit_counts[:behind], diverging_commit_counts[:ahead]].max
|
||||
end
|
||||
end
|
||||
|
||||
render
|
||||
end
|
||||
|
|
|
@ -398,6 +398,22 @@ describe Projects::BranchesController do
|
|||
end
|
||||
end
|
||||
|
||||
# We need :request_store because Gitaly only counts the queries whenever
|
||||
# `RequestStore.active?` in GitalyClient.enforce_gitaly_request_limits
|
||||
# And the main goal of this test is making sure TooManyInvocationsError
|
||||
# was not raised whenever the cache is enabled yet cold.
|
||||
context 'when cache is enabled yet cold', :request_store do
|
||||
it 'return with a status 200' do
|
||||
get :index,
|
||||
namespace_id: project.namespace,
|
||||
project_id: project,
|
||||
state: 'all',
|
||||
format: :html
|
||||
|
||||
expect(response).to have_gitlab_http_status(200)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when branch contains an invalid UTF-8 sequence' do
|
||||
before do
|
||||
project.repository.create_branch("wrong-\xE5-utf8-sequence")
|
||||
|
@ -414,7 +430,7 @@ describe Projects::BranchesController do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when depreated sort/search/page parameters are specified' do
|
||||
context 'when deprecated sort/search/page parameters are specified' do
|
||||
it 'returns with a status 301 when sort specified' do
|
||||
get :index,
|
||||
namespace_id: project.namespace,
|
||||
|
|
Loading…
Reference in a new issue