File: load_placeholder_references_worker.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (55 lines) | stat: -rw-r--r-- 1,628 bytes parent folder | download
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# frozen_string_literal: true

module Import
  class LoadPlaceholderReferencesWorker
    include ApplicationWorker

    data_consistency :delayed
    deduplicate :until_executed, if_deduplicated: :reschedule_once
    idempotent!
    feature_category :importers
    loggable_arguments 0, 1
    sidekiq_options retry: 6

    sidekiq_retries_exhausted do |msg, exception|
      new.perform_failure(exception, msg['args'].first, msg['args'].second)
    end

    def perform(import_source, import_uid, params = {})
      return unless Feature.enabled?(:importer_user_mapping, User.actor_from_id(params['current_user_id']))

      ::Import::PlaceholderReferences::LoadService.new(
        import_source: import_source,
        import_uid: import_uid
      ).execute
    end

    def perform_failure(exception, import_source, import_uid)
      fail_import(import_source, import_uid)

      ::Import::Framework::Logger.error(
        message: 'Failed to load all references to placeholder user contributions',
        error: exception.message,
        import_source: import_source,
        import_uid: import_uid
      )
    end

    private

    def fail_import(import_source, import_uid)
      import_state = nil

      case import_source
      when 'gitlab'
        import_state = BulkImport.find_by_id(import_uid)
      when 'github', 'bitbucket', 'bitbucket_server', 'fogbugz', 'gitea', 'gitlab_project'
        import_state = ProjectImportState.find_by_id(import_uid)
      when 'import_group_from_file'
        import_state = GroupImportState.find_by_group_id(import_uid)
      end

      import_state&.fail_op
    end
  end
end