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