uploads: fix exception when pruning expired uploads.
Hourly pruning of expired uploads was failing because of nil deference errors in `media_asset.destroy!`. There are various cases where an upload doesn't have a media asset, for example when the source url fails to download or when the upload is of an invalid filetype.
This commit is contained in:
@@ -115,7 +115,7 @@ class Upload < ApplicationRecord
|
||||
return
|
||||
end
|
||||
|
||||
media_asset.destroy!
|
||||
media_asset&.destroy!
|
||||
DanbooruLogger.info("Uploads: Deleting files for upload md5=#{md5}")
|
||||
Danbooru.config.storage_manager.delete_file(nil, md5, file_ext, :original)
|
||||
Danbooru.config.storage_manager.delete_file(nil, md5, file_ext, :large)
|
||||
|
||||
@@ -1033,5 +1033,12 @@ class UploadServiceTest < ActiveSupport::TestCase
|
||||
assert(@upload.is_errored?)
|
||||
assert_difference("Upload.count", -1) { @upload.destroy! }
|
||||
end
|
||||
|
||||
should "work on uploads with an invalid file" do
|
||||
@upload = as(@user) { UploadService.new(file: upload_file("test/files/test-empty.bin")).start! }
|
||||
|
||||
assert(@upload.is_errored?)
|
||||
assert_difference("Upload.count", -1) { @upload.destroy! }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user