diff options
author | Michael Kozono <mkozono@gmail.com> | 2017-11-08 23:31:51 +0300 |
---|---|---|
committer | Michael Kozono <mkozono@gmail.com> | 2017-12-02 02:26:41 +0300 |
commit | 41412fec5b9aea8a6104320c5b554ffdabe52506 (patch) | |
tree | df8ee71223795e2ebfe92f8a6617a6d58afe1cd4 | |
parent | 36611773e920ebaa1c1c8d603107f47200fb8e00 (diff) |
Avoid instantiating an AR object and ignore dupes
-rw-r--r-- | lib/gitlab/background_migration/prepare_unhashed_uploads.rb | 16 |
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 |