blob: 34c31fea726286218058ebfba792c1f3bc74d02c (
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
37
38
39
40
41
|
# frozen_string_literal: true
module Gitlab
module GithubImport
module Stage
class ImportLfsObjectsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker
data_consistency :always
include StageMethods
# Importer::LfsObjectsImporter can resume work when interrupted as
# it uses Projects::LfsPointers::LfsObjectDownloadListService which excludes LFS objects that already exist.
# https://gitlab.com/gitlab-org/gitlab/-/blob/eabf0800/app/services/projects/lfs_pointers/lfs_object_download_list_service.rb#L69-71
resumes_work_when_interrupted!
def perform(project_id)
return unless (project = find_project(project_id))
import(project)
end
# project - An instance of Project.
def import(project)
info(project.id, message: "starting importer", importer: 'Importer::LfsObjectsImporter')
waiter = Importer::LfsObjectsImporter
.new(project, nil)
.execute
AdvanceStageWorker.perform_async(
project.id,
{ waiter.key => waiter.jobs_remaining },
'finish'
)
end
end
end
end
end
|