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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-28 18:06:57 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-28 18:06:57 +0300
commit7cdd70dcec27402e89e65451b4b1feb75b5eb267 (patch)
tree1691c8e1afd469fa426ecf5bc127de8df16d4855 /lib/gitlab/import_export
parent79348faced5e7e62103ad27f6a6594dfdca463e2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/import_export')
-rw-r--r--lib/gitlab/import_export/project_tree_restorer.rb26
1 files changed, 24 insertions, 2 deletions
diff --git a/lib/gitlab/import_export/project_tree_restorer.rb b/lib/gitlab/import_export/project_tree_restorer.rb
index c401f96b5c1..c89b8f563dc 100644
--- a/lib/gitlab/import_export/project_tree_restorer.rb
+++ b/lib/gitlab/import_export/project_tree_restorer.rb
@@ -85,13 +85,16 @@ module Gitlab
# we do not care if we process array or hash
data_hashes = [data_hashes] unless data_hashes.is_a?(Array)
+ relation_index = 0
+
# consume and remove objects from memory
while data_hash = data_hashes.shift
- process_project_relation_item!(relation_key, relation_definition, data_hash)
+ process_project_relation_item!(relation_key, relation_definition, relation_index, data_hash)
+ relation_index += 1
end
end
- def process_project_relation_item!(relation_key, relation_definition, data_hash)
+ def process_project_relation_item!(relation_key, relation_definition, relation_index, data_hash)
relation_object = build_relation(relation_key, relation_definition, data_hash)
return unless relation_object
return if group_model?(relation_object)
@@ -100,6 +103,25 @@ module Gitlab
relation_object.save!
save_id_mapping(relation_key, data_hash, relation_object)
+ rescue => e
+ # re-raise if not enabled
+ raise e unless Feature.enabled?(:import_graceful_failures, @project.group)
+
+ log_import_failure(relation_key, relation_index, e)
+ end
+
+ def log_import_failure(relation_key, relation_index, exception)
+ Gitlab::Sentry.track_acceptable_exception(exception,
+ extra: { project_id: @project.id, relation_key: relation_key, relation_index: relation_index })
+
+ ImportFailure.create(
+ project: @project,
+ relation_key: relation_key,
+ relation_index: relation_index,
+ exception_class: exception.class.to_s,
+ exception_message: exception.message.truncate(255),
+ correlation_id_value: Labkit::Correlation::CorrelationId.current_id
+ )
end
# Older, serialized CI pipeline exports may only have a