Remove fast_destroy_uploads feature flag
Fast destroy of uploads was successfully enabled and test.
This commit is contained in:
parent
453dec0a57
commit
c3782d20af
|
|
@ -27,40 +27,14 @@ module WithUploads
|
|||
|
||||
included do
|
||||
has_many :uploads, as: :model
|
||||
has_many :file_uploads, -> { where(uploader: FILE_UPLOADERS) }, class_name: 'Upload', as: :model
|
||||
has_many :file_uploads, -> { where(uploader: FILE_UPLOADERS) },
|
||||
class_name: 'Upload', as: :model,
|
||||
dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent
|
||||
|
||||
# TODO: when feature flag is removed, we can use just dependent: destroy
|
||||
# option on :file_uploads
|
||||
before_destroy :remove_file_uploads
|
||||
|
||||
use_fast_destroy :file_uploads, if: :fast_destroy_enabled?
|
||||
use_fast_destroy :file_uploads
|
||||
end
|
||||
|
||||
def retrieve_upload(_identifier, paths)
|
||||
uploads.find_by(path: paths)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# mounted uploads are deleted in carrierwave's after_commit hook,
|
||||
# but FileUploaders which are not mounted must be deleted explicitly and
|
||||
# it can not be done in after_commit because FileUploader requires loads
|
||||
# associated model on destroy (which is already deleted in after_commit)
|
||||
def remove_file_uploads
|
||||
fast_destroy_enabled? ? delete_uploads : destroy_uploads
|
||||
end
|
||||
|
||||
def delete_uploads
|
||||
file_uploads.delete_all(:delete_all)
|
||||
end
|
||||
|
||||
def destroy_uploads
|
||||
file_uploads.find_each do |upload|
|
||||
upload.destroy
|
||||
end
|
||||
end
|
||||
|
||||
def fast_destroy_enabled?
|
||||
Feature.enabled?(:fast_destroy_uploads, self)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: File uploads are deleted asynchronously when deleting a project or group.
|
||||
merge_request:
|
||||
author:
|
||||
type: added
|
||||
|
|
@ -44,26 +44,6 @@ shared_examples_for 'model with uploads' do |supports_fileuploads|
|
|||
model_object.destroy
|
||||
end
|
||||
end
|
||||
|
||||
describe 'destroy strategy depending on feature flag' do
|
||||
let!(:upload) { create(:upload, uploader: FileUploader, model: model_object) }
|
||||
|
||||
it 'does not destroy uploads by default' do
|
||||
expect(model_object).to receive(:delete_uploads)
|
||||
expect(model_object).not_to receive(:destroy_uploads)
|
||||
|
||||
model_object.destroy
|
||||
end
|
||||
|
||||
it 'uses before destroy callback if feature flag is disabled' do
|
||||
stub_feature_flags(fast_destroy_uploads: false)
|
||||
|
||||
expect(model_object).to receive(:destroy_uploads)
|
||||
expect(model_object).not_to receive(:delete_uploads)
|
||||
|
||||
model_object.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue