diff --git a/ee/app/services/search/zoekt/indexing_task_service.rb b/ee/app/services/search/zoekt/indexing_task_service.rb index f0cf449db37b84b30a4904416701517a8c81d975..080b9e19dcb4f440abe21a60539b3c5c5c73bc2a 100644 --- a/ee/app/services/search/zoekt/indexing_task_service.rb +++ b/ee/app/services/search/zoekt/indexing_task_service.rb @@ -39,7 +39,11 @@ def execute attr_reader :project_id, :project, :node_id, :root_namespace_id, :force, :task_type, :delay def preflight_check? - task_type == :delete_repo || project.present? + return true if task_type == :delete_repo + return false unless project + return false if project.empty_repo? + + true end def random_force_reindexing? diff --git a/ee/spec/services/search/zoekt/indexing_task_service_spec.rb b/ee/spec/services/search/zoekt/indexing_task_service_spec.rb index 2bfb22d3fbf0d476a160f564c8b880636b961002..a7945873acf350e376af55f1a165455f880d174f 100644 --- a/ee/spec/services/search/zoekt/indexing_task_service_spec.rb +++ b/ee/spec/services/search/zoekt/indexing_task_service_spec.rb @@ -3,14 +3,14 @@ require 'spec_helper' RSpec.describe Search::Zoekt::IndexingTaskService, feature_category: :global_search do - let_it_be(:ns) { create(:namespace) } + let_it_be(:ns) { create(:group) } let_it_be(:project) { create(:project, :repository, namespace: ns) } let_it_be(:node) { create(:zoekt_node, :enough_free_space) } let_it_be(:zoekt_enabled_namespace) { create(:zoekt_enabled_namespace, namespace: ns) } let_it_be(:zoekt_index) { create(:zoekt_index, zoekt_enabled_namespace: zoekt_enabled_namespace, node: node) } describe '.execute' do - let(:service) { described_class.new(project, :index_repo) } + let(:service) { described_class.new(project.id, :index_repo) } it 'executes the task' do expect(described_class).to receive(:new).with(project.id, :index_repo).and_return(service) @@ -21,7 +21,7 @@ describe '#execute' do context 'when task_type is delete_repo' do - let(:service) { described_class.new(project, :delete_repo) } + let(:service) { described_class.new(project.id, :delete_repo) } it 'creates Search::Zoekt::Task record' do expect { service.execute }.to change { Search::Zoekt::Task.count }.by(1) @@ -30,7 +30,7 @@ context 'when task_type is not delete_repo' do let(:task_type) { 'index_repo' } - let(:service) { described_class.new(project, task_type) } + let(:service) { described_class.new(project.id, task_type) } context 'when zoekt_random_force_reindexing is disabled' do before do @@ -39,7 +39,7 @@ context 'for preflight_check? is false' do context 'if project does not have a repository' do - let_it_be(:project) { create(:project) } + let_it_be(:project) { create(:project, :empty_repo, namespace: ns) } it 'does not creates Search::Zoekt::Task record' do expect { service.execute }.not_to change { Search::Zoekt::Task.count } @@ -47,11 +47,9 @@ end context 'if project does not exists' do - let_it_be(:project) { create(:project, :empty_repo) } - it 'does not creates Search::Zoekt::Task record' do - service = described_class.new(project, task_type) project.destroy! + service = described_class.new(project.id, task_type) expect { service.execute }.not_to change { Search::Zoekt::Task.count } end end @@ -85,7 +83,7 @@ context 'when delay is passed' do let(:delay) { 1.hour } - let(:service) { described_class.new(project, task_type, delay: delay) } + let(:service) { described_class.new(project.id, task_type, delay: delay) } it 'sets perform_at with delay' do freeze_time do