Class: Gitlab::GithubImport::Stage::ImportPullRequestsWorker

Inherits:
Object
  • Object
show all
Includes:
ApplicationWorker, Queue, Gitlab::GithubImport::StageMethods
Defined in:
app/workers/gitlab/github_import/stage/import_pull_requests_worker.rb

Overview

rubocop:disable Scalability/IdempotentWorker

Constant Summary

Constants included from ApplicationWorker

ApplicationWorker::LOGGING_EXTRA_KEY, ApplicationWorker::SAFE_PUSH_BULK_LIMIT

Constants included from Loggable

Loggable::ANONYMOUS

Constants included from WorkerAttributes

WorkerAttributes::DEFAULT_DATA_CONSISTENCY, WorkerAttributes::DEFAULT_DEFER_DELAY, WorkerAttributes::NAMESPACE_WEIGHTS, WorkerAttributes::VALID_DATA_CONSISTENCIES, WorkerAttributes::VALID_RESOURCE_BOUNDARIES, WorkerAttributes::VALID_URGENCIES

Instance Method Summary collapse

Methods included from Gitlab::GithubImport::StageMethods

#find_project, #perform, #try_import

Methods included from Loggable

#build_structured_payload

Methods included from SidekiqVersioning::Worker

#job_version

Methods included from WorkerContext

#with_context

Instance Method Details

#import(client, project) ⇒ Object

client - An instance of Gitlab::GithubImport::Client. project - An instance of Project.



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
# File 'app/workers/gitlab/github_import/stage/import_pull_requests_worker.rb', line 17

def import(client, project)
  info(project.id, message: "starting importer", importer: 'Importer::PullRequestsImporter')

  # If a user creates a new merge request while the import is in progress, GitLab can assign an IID
  # to this merge request that already exists for a GitHub Pull Request.
  # The workaround is to allocate IIDs before starting the importer.
  allocate_merge_requests_internal_id!(project, client)

  waiter = Importer::PullRequestsImporter
    .new(project, client)
    .execute

  project.import_state.refresh_jid_expiration

  AdvanceStageWorker.perform_async(
    project.id,
    { waiter.key => waiter.jobs_remaining },
    :collaborators
  )
rescue StandardError => e
  Gitlab::Import::ImportFailureService.track(
    project_id: project.id,
    error_source: self.class.name,
    exception: e,
    fail_import: abort_on_failure,
    metrics: true
  )

  raise(e)
end