diff --git a/ee/lib/gitlab/zoekt/search_results.rb b/ee/lib/gitlab/zoekt/search_results.rb index faa7abca96b48406684c31ff2c77cf368f241387..3524be41a87a0c4baeca47b13a9e1fc703e879a0 100644 --- a/ee/lib/gitlab/zoekt/search_results.rb +++ b/ee/lib/gitlab/zoekt/search_results.rb @@ -209,7 +209,7 @@ def zoekt_search_and_wrap(query, per_page:, page: 1, options: {}, preload_method end def yield_each_zoekt_search_result(response, preload_method, total_count) - return [[], total_count] if total_count == 0 + return [[], total_count] if total_count == 0 || response.blank? project_ids = response.pluck(:project_id).uniq # rubocop:disable CodeReuse/ActiveRecord projects = Project.with_route.id_in(project_ids) diff --git a/ee/spec/lib/gitlab/zoekt/search_results_spec.rb b/ee/spec/lib/gitlab/zoekt/search_results_spec.rb index 2536190c6e2fbf25702a989f33f8ae1970d9063f..310f6dbfb410203e83c9d1028bba159f6ce3ba36 100644 --- a/ee/spec/lib/gitlab/zoekt/search_results_spec.rb +++ b/ee/spec/lib/gitlab/zoekt/search_results_spec.rb @@ -59,6 +59,13 @@ expect(results.blobs_count).to eq 5 end + it 'returns empty result when request is out of page range' do + results = described_class.new(user, 'use.*egex', limit_project_ids, node_id: node_id) + blobs_page = results.objects('blobs', page: 256, per_page: 2) + + expect(blobs_page).to be_empty + end + it 'limits to the zoekt count limit' do stub_const("#{described_class}::ZOEKT_COUNT_LIMIT", 2)