summaryrefslogtreecommitdiff
path: root/app/workers/gitlab
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/gitlab')
-rw-r--r--app/workers/gitlab/github_import/attachments/import_issue_worker.rb23
-rw-r--r--app/workers/gitlab/github_import/attachments/import_merge_request_worker.rb23
-rw-r--r--app/workers/gitlab/github_import/attachments/import_note_worker.rb23
-rw-r--r--app/workers/gitlab/github_import/attachments/import_release_worker.rb23
-rw-r--r--app/workers/gitlab/github_import/import_issue_worker.rb4
-rw-r--r--app/workers/gitlab/github_import/import_release_attachments_worker.rb6
-rw-r--r--app/workers/gitlab/github_import/stage/import_attachments_worker.rb9
-rw-r--r--app/workers/gitlab/github_import/stage/import_issue_events_worker.rb14
-rw-r--r--app/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker.rb2
-rw-r--r--app/workers/gitlab/github_import/stage/import_notes_worker.rb2
-rw-r--r--app/workers/gitlab/github_import/stage/import_repository_worker.rb18
11 files changed, 129 insertions, 18 deletions
diff --git a/app/workers/gitlab/github_import/attachments/import_issue_worker.rb b/app/workers/gitlab/github_import/attachments/import_issue_worker.rb
new file mode 100644
index 00000000000..1a9fa15b850
--- /dev/null
+++ b/app/workers/gitlab/github_import/attachments/import_issue_worker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module GithubImport
+ module Attachments
+ class ImportIssueWorker # rubocop:disable Scalability/IdempotentWorker
+ include ObjectImporter
+
+ def representation_class
+ Representation::NoteText
+ end
+
+ def importer_class
+ Importer::NoteAttachmentsImporter
+ end
+
+ def object_type
+ :issue_attachment
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/github_import/attachments/import_merge_request_worker.rb b/app/workers/gitlab/github_import/attachments/import_merge_request_worker.rb
new file mode 100644
index 00000000000..a86852b094f
--- /dev/null
+++ b/app/workers/gitlab/github_import/attachments/import_merge_request_worker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module GithubImport
+ module Attachments
+ class ImportMergeRequestWorker # rubocop:disable Scalability/IdempotentWorker
+ include ObjectImporter
+
+ def representation_class
+ Representation::NoteText
+ end
+
+ def importer_class
+ Importer::NoteAttachmentsImporter
+ end
+
+ def object_type
+ :merge_request_attachment
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/github_import/attachments/import_note_worker.rb b/app/workers/gitlab/github_import/attachments/import_note_worker.rb
new file mode 100644
index 00000000000..2f5bc50ee0b
--- /dev/null
+++ b/app/workers/gitlab/github_import/attachments/import_note_worker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module GithubImport
+ module Attachments
+ class ImportNoteWorker # rubocop:disable Scalability/IdempotentWorker
+ include ObjectImporter
+
+ def representation_class
+ Representation::NoteText
+ end
+
+ def importer_class
+ Importer::NoteAttachmentsImporter
+ end
+
+ def object_type
+ :note_attachment
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/github_import/attachments/import_release_worker.rb b/app/workers/gitlab/github_import/attachments/import_release_worker.rb
new file mode 100644
index 00000000000..5eea5702d3c
--- /dev/null
+++ b/app/workers/gitlab/github_import/attachments/import_release_worker.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module GithubImport
+ module Attachments
+ class ImportReleaseWorker # rubocop:disable Scalability/IdempotentWorker
+ include ObjectImporter
+
+ def representation_class
+ Representation::NoteText
+ end
+
+ def importer_class
+ Importer::NoteAttachmentsImporter
+ end
+
+ def object_type
+ :release_attachment
+ end
+ end
+ end
+ end
+end
diff --git a/app/workers/gitlab/github_import/import_issue_worker.rb b/app/workers/gitlab/github_import/import_issue_worker.rb
index 8fdc0219ffd..7d6a28f4a96 100644
--- a/app/workers/gitlab/github_import/import_issue_worker.rb
+++ b/app/workers/gitlab/github_import/import_issue_worker.rb
@@ -16,6 +16,10 @@ module Gitlab
def object_type
:issue
end
+
+ def increment_object_counter?(object)
+ !object.pull_request?
+ end
end
end
end
diff --git a/app/workers/gitlab/github_import/import_release_attachments_worker.rb b/app/workers/gitlab/github_import/import_release_attachments_worker.rb
index c6f45ec1d7c..bf901f2f7b8 100644
--- a/app/workers/gitlab/github_import/import_release_attachments_worker.rb
+++ b/app/workers/gitlab/github_import/import_release_attachments_worker.rb
@@ -1,16 +1,18 @@
# frozen_string_literal: true
+# TODO: remove in 16.X milestone
+# https://gitlab.com/gitlab-org/gitlab/-/issues/377059
module Gitlab
module GithubImport
class ImportReleaseAttachmentsWorker # rubocop:disable Scalability/IdempotentWorker
include ObjectImporter
def representation_class
- Representation::ReleaseAttachments
+ Representation::NoteText
end
def importer_class
- Importer::ReleaseAttachmentsImporter
+ Importer::NoteAttachmentsImporter
end
def object_type
diff --git a/app/workers/gitlab/github_import/stage/import_attachments_worker.rb b/app/workers/gitlab/github_import/stage/import_attachments_worker.rb
index e9086dca503..e4a413b4081 100644
--- a/app/workers/gitlab/github_import/stage/import_attachments_worker.rb
+++ b/app/workers/gitlab/github_import/stage/import_attachments_worker.rb
@@ -28,7 +28,12 @@ module Gitlab
# For future issue/mr/milestone/etc attachments importers
def importers
- [::Gitlab::GithubImport::Importer::ReleasesAttachmentsImporter]
+ [
+ ::Gitlab::GithubImport::Importer::Attachments::ReleasesImporter,
+ ::Gitlab::GithubImport::Importer::Attachments::NotesImporter,
+ ::Gitlab::GithubImport::Importer::Attachments::IssuesImporter,
+ ::Gitlab::GithubImport::Importer::Attachments::MergeRequestsImporter
+ ]
end
def start_importer(project, importer, client)
@@ -50,7 +55,7 @@ module Gitlab
end
def feature_disabled?(project)
- Feature.disabled?(:github_importer_attachments_import, project.group, type: :ops)
+ import_settings(project).disabled?(:attachments_import)
end
end
end
diff --git a/app/workers/gitlab/github_import/stage/import_issue_events_worker.rb b/app/workers/gitlab/github_import/stage/import_issue_events_worker.rb
index 0ec0a1b58d2..54ed4c47e78 100644
--- a/app/workers/gitlab/github_import/stage/import_issue_events_worker.rb
+++ b/app/workers/gitlab/github_import/stage/import_issue_events_worker.rb
@@ -15,9 +15,9 @@ module Gitlab
# client - An instance of Gitlab::GithubImport::Client.
# project - An instance of Project.
def import(client, project)
- importer = importer_class(project)
- return skip_to_next_stage(project) if importer.nil?
+ return skip_to_next_stage(project) if import_settings(project).disabled?(:single_endpoint_issue_events_import)
+ importer = ::Gitlab::GithubImport::Importer::SingleEndpointIssueEventsImporter
info(project.id, message: "starting importer", importer: importer.name)
waiter = importer.new(project, client).execute
move_to_next_stage(project, { waiter.key => waiter.jobs_remaining })
@@ -25,16 +25,6 @@ module Gitlab
private
- def importer_class(project)
- if Feature.enabled?(:github_importer_single_endpoint_issue_events_import, project.group, type: :ops)
- ::Gitlab::GithubImport::Importer::SingleEndpointIssueEventsImporter
- elsif Feature.enabled?(:github_importer_issue_events_import, project.group, type: :ops)
- ::Gitlab::GithubImport::Importer::IssueEventsImporter
- else
- nil
- end
- end
-
def skip_to_next_stage(project)
info(project.id, message: "skipping importer", importer: "IssueEventsImporter")
move_to_next_stage(project)
diff --git a/app/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker.rb b/app/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker.rb
index 7922c1113c4..3d1a8437da2 100644
--- a/app/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker.rb
+++ b/app/workers/gitlab/github_import/stage/import_issues_and_diff_notes_worker.rb
@@ -36,7 +36,7 @@ module Gitlab
private
def diff_notes_importer(project)
- if project.group.present? && Feature.enabled?(:github_importer_single_endpoint_notes_import, project.group, type: :ops)
+ if import_settings(project).enabled?(:single_endpoint_notes_import)
Importer::SingleEndpointDiffNotesImporter
else
Importer::DiffNotesImporter
diff --git a/app/workers/gitlab/github_import/stage/import_notes_worker.rb b/app/workers/gitlab/github_import/stage/import_notes_worker.rb
index b53e31ce40e..40ca12b130f 100644
--- a/app/workers/gitlab/github_import/stage/import_notes_worker.rb
+++ b/app/workers/gitlab/github_import/stage/import_notes_worker.rb
@@ -25,7 +25,7 @@ module Gitlab
end
def importers(project)
- if project.group.present? && Feature.enabled?(:github_importer_single_endpoint_notes_import, project.group, type: :ops)
+ if import_settings(project).enabled?(:single_endpoint_notes_import)
[
Importer::SingleEndpointMergeRequestNotesImporter,
Importer::SingleEndpointIssueNotesImporter
diff --git a/app/workers/gitlab/github_import/stage/import_repository_worker.rb b/app/workers/gitlab/github_import/stage/import_repository_worker.rb
index 3e914cc7590..8c1a2cd2677 100644
--- a/app/workers/gitlab/github_import/stage/import_repository_worker.rb
+++ b/app/workers/gitlab/github_import/stage/import_repository_worker.rb
@@ -26,6 +26,11 @@ module Gitlab
RefreshImportJidWorker.perform_in_the_future(project.id, jid)
info(project.id, message: "starting importer", importer: 'Importer::RepositoryImporter')
+
+ # If a user creates an issue while the import is in progress, this can lead to an import failure.
+ # The workaround is to allocate IIDs before starting the importer.
+ allocate_issues_internal_id!(project, client)
+
importer = Importer::RepositoryImporter.new(project, client)
importer.execute
@@ -56,6 +61,19 @@ module Gitlab
def abort_on_failure
true
end
+
+ private
+
+ def allocate_issues_internal_id!(project, client)
+ return if InternalId.exists?(project: project, usage: :issues) # rubocop: disable CodeReuse/ActiveRecord
+
+ options = { state: 'all', sort: 'number', direction: 'desc', per_page: '1' }
+ last_github_issue = client.each_object(:issues, project.import_source, options).first
+
+ return unless last_github_issue
+
+ Issue.track_project_iid!(project, last_github_issue[:number])
+ end
end
end
end