1# frozen_string_literal: true
2
3class ScheduleMigrateExternalDiffsWorker # rubocop:disable Scalability/IdempotentWorker
4  include ApplicationWorker
5
6  data_consistency :always
7
8  # rubocop:disable Scalability/CronWorkerContext:
9  # This schedules the `MigrateExternalDiffsWorker`
10  # issue for adding context: https://gitlab.com/gitlab-org/gitlab/issues/202100
11  include CronjobQueue
12  # rubocop:enable Scalability/CronWorkerContext:
13
14  include Gitlab::ExclusiveLeaseHelpers
15
16  feature_category :code_review
17
18  def perform
19    in_lock(self.class.name.underscore, ttl: 2.hours, retries: 0) do
20      MergeRequests::MigrateExternalDiffsService.enqueue!
21    end
22  rescue Gitlab::ExclusiveLeaseHelpers::FailedToObtainLockError
23  end
24end
25