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:
authorMichael Kozono <mkozono@gmail.com>2017-11-08 07:15:28 +0300
committerMichael Kozono <mkozono@gmail.com>2017-11-17 03:51:39 +0300
commit05f26bf0e0e04dc572b589f75b12fb29d44872ca (patch)
tree95c3766f8ff7e996eec26d10138ce4c1120745cf
parent87ecf3a707d40e3f6060e25e2f2995207be1e41e (diff)
Allow individual failures
-rw-r--r--lib/gitlab/background_migration/populate_untracked_uploads.rb40
1 files changed, 24 insertions, 16 deletions
diff --git a/lib/gitlab/background_migration/populate_untracked_uploads.rb b/lib/gitlab/background_migration/populate_untracked_uploads.rb
index 1773b53bd68..934431ccddd 100644
--- a/lib/gitlab/background_migration/populate_untracked_uploads.rb
+++ b/lib/gitlab/background_migration/populate_untracked_uploads.rb
@@ -97,28 +97,18 @@ module Gitlab
end
def uploader
- PATH_PATTERNS.each do |path_pattern_map|
- if path_relative_to_upload_dir.match(path_pattern_map[:pattern])
- return path_pattern_map[:uploader]
- end
- end
+ matching_pattern_map[:uploader]
end
def model_type
- PATH_PATTERNS.each do |path_pattern_map|
- if path_relative_to_upload_dir.match(path_pattern_map[:pattern])
- return path_pattern_map[:model_type]
- end
- end
+ matching_pattern_map[:model_type]
end
def model_id
- PATH_PATTERNS.each do |path_pattern_map|
- matchd = path_relative_to_upload_dir.match(path_pattern_map[:pattern])
+ matchd = path_relative_to_upload_dir.match(matching_pattern_map[:pattern])
- # If something is captured (matchd[1] is not nil), it is a model_id
- return matchd[1] if matchd && matchd[1]
- end
+ # If something is captured (matchd[1] is not nil), it is a model_id
+ return matchd[1] if matchd[1]
# Only the FileUploader pattern will not match an ID
file_uploader_model_id
@@ -140,6 +130,16 @@ module Gitlab
private
+ def matching_pattern_map
+ @matching_pattern_map ||= PATH_PATTERNS.find do |path_pattern_map|
+ path_relative_to_upload_dir.match(path_pattern_map[:pattern])
+ end
+
+ raise "Unknown upload path pattern \"#{path}\"" unless @matching_pattern_map
+
+ @matching_pattern_map
+ end
+
def file_uploader_model_id
pattern_to_capture_full_path = /\A(.+)#{FILE_UPLOADER_PATH_PATTERN}/
matchd = path_relative_to_upload_dir.match(pattern_to_capture_full_path)
@@ -222,7 +222,15 @@ module Gitlab
files = UnhashedUploadFile.untracked.where(id: start_id..end_id)
files.each do |unhashed_upload_file|
- unhashed_upload_file.ensure_tracked!
+ begin
+ unhashed_upload_file.ensure_tracked!
+ rescue StandardError => e
+ Rails.logger.warn "Failed to add untracked file to uploads: #{e.message}"
+
+ # The untracked rows will remain in the DB. We will be able to see
+ # which ones failed to become tracked, and then we can decide what
+ # to do.
+ end
end
end