Commit 11d6c7e2 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch 'sh-fix-issue-55161' into 'master'

Fix failing MySQL spec due to deadlock condition

Closes #55161

See merge request gitlab-org/gitlab-ce!24378
parents 6357ff11 bcdb5a0a
......@@ -23,13 +23,23 @@ module RecordsUploads
return unless model
return unless file && file.exists?
Upload.transaction do
uploads.where(path: upload_path).delete_all
upload.delete if upload
self.upload = build_upload.tap(&:save!)
# MySQL InnoDB may encounter a deadlock if a deletion and an
# insert is in the same transaction due to its next-key locking
# algorithm, so we need to skip the transaction.
# https://gitlab.com/gitlab-org/gitlab-ce/issues/55161#note_131556351
if Gitlab::Database.mysql?
readd_upload
else
Upload.transaction { readd_upload }
end
end
def readd_upload
uploads.where(path: upload_path).delete_all
upload.delete if upload
self.upload = build_upload.tap(&:save!)
end
# rubocop: enable CodeReuse/ActiveRecord
def upload_path
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment