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