summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Kozono <mkozono@gmail.com>2017-11-07 20:15:28 -0800
committerMichael Kozono <mkozono@gmail.com>2017-12-01 15:26:40 -0800
commit3dc74378ec54afb4b15d9f1bdf3781ddd50f83e3 (patch)
tree88729b31d44ca044d4eb34a3a5d8e34601476c68 /lib
parent1bae010b63f0bcff79f32ce99190f2d5b6d9fbcd (diff)
downloadgitlab-ce-3dc74378ec54afb4b15d9f1bdf3781ddd50f83e3.tar.gz
Allow individual failures
Diffstat (limited to 'lib')
-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