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

ci_project_mirrors_consistency_check_worker.rb « database « workers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 5f10310f8d6e940b6d6709b1e7566273323cc22a (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
35
36
# frozen_string_literal: true

module Database
  class CiProjectMirrorsConsistencyCheckWorker
    include ApplicationWorker
    include CronjobQueue # rubocop: disable Scalability/CronWorkerContext

    sidekiq_options retry: false
    feature_category :pods
    data_consistency :sticky
    idempotent!

    version 1

    def perform
      results = ConsistencyCheckService.new(
        source_model: Project,
        target_model: Ci::ProjectMirror,
        source_columns: %w[id namespace_id],
        target_columns: %w[project_id namespace_id]
      ).execute

      if results[:mismatches_details].any?
        ConsistencyFixService.new(
          source_model: Project,
          target_model: Ci::ProjectMirror,
          sync_event_class: Projects::SyncEvent,
          source_sort_key: :id,
          target_sort_key: :project_id
        ).execute(ids: results[:mismatches_details].map { |h| h[:id] })
      end

      log_extra_metadata_on_done(:results, results)
    end
  end
end