From 5e4b31f07a3a498ad5bcd30237db3c2a10404da2 Mon Sep 17 00:00:00 2001
From: Max Fan <mfan@gitlab.com>
Date: Sat, 4 Nov 2023 19:22:02 +0000
Subject: [PATCH] Reschedule_once duplication strategy for EntityWorker

---
 app/workers/bulk_imports/entity_worker.rb       | 4 ++--
 spec/workers/bulk_imports/entity_worker_spec.rb | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/app/workers/bulk_imports/entity_worker.rb b/app/workers/bulk_imports/entity_worker.rb
index 9b60dcdeb8a76..1c555d95a2e68 100644
--- a/app/workers/bulk_imports/entity_worker.rb
+++ b/app/workers/bulk_imports/entity_worker.rb
@@ -5,13 +5,13 @@ class EntityWorker
     include ApplicationWorker
 
     idempotent!
-    deduplicate :until_executed
+    deduplicate :until_executed, if_deduplicated: :reschedule_once
     data_consistency :always
     feature_category :importers
     sidekiq_options retry: false, dead: false
     worker_has_external_dependencies!
 
-    PERFORM_DELAY = 5.seconds
+    PERFORM_DELAY = 30.seconds
 
     # Keep `_current_stage` parameter for backwards compatibility.
     # The parameter will be remove in https://gitlab.com/gitlab-org/gitlab/-/issues/426311
diff --git a/spec/workers/bulk_imports/entity_worker_spec.rb b/spec/workers/bulk_imports/entity_worker_spec.rb
index 5f948906c08a0..5902ca87a17b8 100644
--- a/spec/workers/bulk_imports/entity_worker_spec.rb
+++ b/spec/workers/bulk_imports/entity_worker_spec.rb
@@ -49,6 +49,10 @@
     end
   end
 
+  it 'has the option to reschedule once if deduplicated' do
+    expect(described_class.get_deduplication_options).to include({ if_deduplicated: :reschedule_once })
+  end
+
   context 'when pipeline workers from a stage are running' do
     before do
       pipeline_tracker.enqueue!
-- 
GitLab