Commit 78ea82c3 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Re-enable allowing n+1 Gitaly calls for cold cache

Whenever cache is enabled and cold, branches index still makes
n+1 calls. Make sure we catch this.
parent 377a2644
...@@ -22,10 +22,14 @@ class Projects::BranchesController < Projects::ApplicationController ...@@ -22,10 +22,14 @@ class Projects::BranchesController < Projects::ApplicationController
@refs_pipelines = @project.pipelines.latest_successful_for_refs(@branches.map(&:name)) @refs_pipelines = @project.pipelines.latest_successful_for_refs(@branches.map(&:name))
@merged_branch_names = repository.merged_branch_names(@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| @max_commits = @branches.reduce(0) do |memo, branch|
diverging_commit_counts = repository.diverging_commit_counts(branch) diverging_commit_counts = repository.diverging_commit_counts(branch)
[memo, diverging_commit_counts[:behind], diverging_commit_counts[:ahead]].max [memo, diverging_commit_counts[:behind], diverging_commit_counts[:ahead]].max
end end
end
render render
end end
......
...@@ -398,6 +398,22 @@ describe Projects::BranchesController do ...@@ -398,6 +398,22 @@ describe Projects::BranchesController do
end end
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 context 'when branch contains an invalid UTF-8 sequence' do
before do before do
project.repository.create_branch("wrong-\xE5-utf8-sequence") project.repository.create_branch("wrong-\xE5-utf8-sequence")
...@@ -414,7 +430,7 @@ describe Projects::BranchesController do ...@@ -414,7 +430,7 @@ describe Projects::BranchesController do
end end
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 it 'returns with a status 301 when sort specified' do
get :index, get :index,
namespace_id: project.namespace, namespace_id: project.namespace,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment