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 23:31:51 +0300
committerMichael Kozono <mkozono@gmail.com>2017-11-17 03:51:39 +0300
commit816a0961614fc3a35adb87018793bc790a51a306 (patch)
treeae73b23cab250e7e6137be15b0095eee83a811e8
parent6ee60e1aeb113235e6e306177e39f8d866d924d9 (diff)
Avoid instantiating an AR object and ignore dupes
-rw-r--r--lib/gitlab/background_migration/prepare_unhashed_uploads.rb16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/gitlab/background_migration/prepare_unhashed_uploads.rb b/lib/gitlab/background_migration/prepare_unhashed_uploads.rb
index 7c426022304..982c0ff5320 100644
--- a/lib/gitlab/background_migration/prepare_unhashed_uploads.rb
+++ b/lib/gitlab/background_migration/prepare_unhashed_uploads.rb
@@ -75,10 +75,24 @@ module Gitlab
def insert_file_paths(file_paths)
file_paths.each do |file_path|
- UnhashedUploadFile.create!(path: file_path)
+ insert_file_path(file_path)
end
end
+ def insert_file_path(file_path)
+ table_columns_and_values = 'unhashed_upload_files (path, created_at, updated_at) VALUES (?, ?, ?)'
+
+ sql = if Gitlab::Database.postgresql?
+ "INSERT INTO #{table_columns_and_values} ON CONFLICT DO NOTHING;"
+ else
+ "INSERT IGNORE INTO #{table_columns_and_values};"
+ end
+
+ timestamp = Time.now.utc.iso8601
+ sql = ActiveRecord::Base.send(:sanitize_sql_array, [sql, file_path, timestamp, timestamp])
+ ActiveRecord::Base.connection.execute(sql)
+ end
+
def schedule_populate_untracked_uploads_jobs
bulk_queue_background_migration_jobs_by_range(UnhashedUploadFile, FOLLOW_UP_MIGRATION)
end