Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ensure_prepared_worker.rb « merge_requests « workers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 6dfe888f408c050eb49bfd16534d7ae125e77c98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# frozen_string_literal: true

module MergeRequests
  class EnsurePreparedWorker
    include ApplicationWorker
    include CronjobQueue

    feature_category :code_review_workflow
    idempotent!
    deduplicate :until_executed
    data_consistency :sticky

    JOBS_PER_10_SECONDS = 5

    def perform
      return unless Feature.enabled?(:ensure_merge_requests_prepared)

      scope = MergeRequest.recently_unprepared

      iterator = Gitlab::Pagination::Keyset::Iterator.new(scope: scope)

      index = 0
      iterator.each_batch(of: JOBS_PER_10_SECONDS) do |merge_requests|
        index += 1

        NewMergeRequestWorker.bulk_perform_in_with_contexts(index * 10.seconds,
          merge_requests,
          arguments_proc: ->(merge_request) { [merge_request.id, merge_request.author_id] },
          context_proc: ->(merge_request) { { project: merge_request.project } }
        )
      end
    end
  end
end