Commit da1aaaf2 authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre

Merge branch 'remove-fast-destroy-flag' into 'master'

Remove fast_destroy_uploads feature flag

Closes #54937

See merge request gitlab-org/gitlab-ce!24930
parents 3dcdf16f c3782d20
......@@ -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
---
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
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