Skip to content
代码片段 群组 项目
提交 bc1d23cb 编辑于 作者: Kerri Miller's avatar Kerri Miller 提交者: Phil Hughes
浏览文件

Rescue MR Dashboard searches from query timeout

上级 44ece390
No related branches found
No related tags found
无相关合并请求
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
module IssuableCollectionsAction module IssuableCollectionsAction
extend ActiveSupport::Concern extend ActiveSupport::Concern
include GracefulTimeoutHandling
include IssuableCollections include IssuableCollections
include IssuesCalendar include IssuesCalendar
...@@ -33,6 +34,10 @@ def merge_requests ...@@ -33,6 +34,10 @@ def merge_requests
@merge_requests = issuables_collection.page(params[:page]) @merge_requests = issuables_collection.page(params[:page])
@issuable_meta_data = Gitlab::IssuableMetadata.new(current_user, @merge_requests).data @issuable_meta_data = Gitlab::IssuableMetadata.new(current_user, @merge_requests).data
rescue ActiveRecord::QueryCanceled => exception # rubocop:disable Database/RescueQueryCanceled
log_exception(exception)
@search_timeout_occurred = true
end end
# rubocop:enable Gitlab/ModuleWithInstanceVariables # rubocop:enable Gitlab/ModuleWithInstanceVariables
......
...@@ -19,5 +19,7 @@ ...@@ -19,5 +19,7 @@
- if current_user && @no_filters_set - if current_user && @no_filters_set
= render 'shared/dashboard/no_filter_selected' = render 'shared/dashboard/no_filter_selected'
- elsif @search_timeout_occurred
= render 'shared/dashboard/search_timeout_occurred'
- else - else
= render 'shared/merge_requests' = render 'shared/merge_requests'
.row.empty-state.text-center
.col-12
.svg-130.gl-mt-3
= image_tag 'illustrations/issue-dashboard_results-without-filter.svg'
.col-12
.text-content
%h4
= _("Too many results to display. Edit your search or add a filter.")
...@@ -44211,6 +44211,9 @@ msgstr "" ...@@ -44211,6 +44211,9 @@ msgstr ""
msgid "Too many references. Quick actions are limited to at most %{max_count} user references" msgid "Too many references. Quick actions are limited to at most %{max_count} user references"
msgstr "" msgstr ""
   
msgid "Too many results to display. Edit your search or add a filter."
msgstr ""
msgid "Too many users found. Quick actions are limited to at most %{max_count} users" msgid "Too many users found. Quick actions are limited to at most %{max_count} users"
msgstr "" msgstr ""
   
...@@ -46,6 +46,37 @@ ...@@ -46,6 +46,37 @@
describe 'GET merge requests' do describe 'GET merge requests' do
it_behaves_like 'issuables list meta-data', :merge_request, :merge_requests it_behaves_like 'issuables list meta-data', :merge_request, :merge_requests
it_behaves_like 'issuables requiring filter', :merge_requests it_behaves_like 'issuables requiring filter', :merge_requests
context 'when an ActiveRecord::QueryCanceled is raised' do
before do
allow_next_instance_of(Gitlab::IssuableMetadata) do |instance|
allow(instance).to receive(:data).and_raise(ActiveRecord::QueryCanceled)
end
end
it 'sets :search_timeout_occurred' do
get :merge_requests, params: { author_id: user.id }
expect(response).to have_gitlab_http_status(:ok)
expect(assigns(:search_timeout_occurred)).to eq(true)
end
context 'rendering views' do
render_views
it 'shows error message' do
get :merge_requests, params: { author_id: user.id }
expect(response.body).to have_content('Too many results to display. Edit your search or add a filter.')
end
end
it 'logs the exception' do
expect(Gitlab::ErrorTracking).to receive(:track_exception).and_call_original
get :merge_requests, params: { author_id: user.id }
end
end
end end
end end
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册