diff --git a/app/uploaders/object_store_uploader.rb b/app/uploaders/object_store_uploader.rb index 3a742d4f715ee3868841d1a62305d2906c3fbde2..9b9f47d5943aaf5a85d6bf74e5d0fb066d476547 100644 --- a/app/uploaders/object_store_uploader.rb +++ b/app/uploaders/object_store_uploader.rb @@ -94,18 +94,20 @@ class ObjectStoreUploader < GitlabUploader # change storage self.object_store = new_store - storage.store!(file).tap do |new_file| - # since we change storage store the new storage - # in case of failure delete new file - begin - subject.save! - rescue => e - new_file.delete - self.object_store = old_store - raise e + with_callbacks(:store, file) do + storage.store!(file).tap do |new_file| + # since we change storage store the new storage + # in case of failure delete new file + begin + subject.save! + rescue => e + new_file.delete + self.object_store = old_store + raise e + end + + old_file.delete end - - old_file.delete end end diff --git a/spec/uploaders/object_store_uploader_spec.rb b/spec/uploaders/object_store_uploader_spec.rb index c55545029803170479e40233a0517de2b2c05304..dd08a40eb97e382a60a88b01ac8325bfa26f2d89 100644 --- a/spec/uploaders/object_store_uploader_spec.rb +++ b/spec/uploaders/object_store_uploader_spec.rb @@ -111,6 +111,16 @@ describe ObjectStoreUploader do end end + context 'when storage is unlicensed' do + before do + stub_artifacts_object_storage(licensed: false) + end + + it "raises an error" do + expect { subject }.to raise_error(/Object Storage feature is missing/) + end + end + context 'when credentials are set' do before do stub_artifacts_object_storage