Commit a42e1a34 authored by Imre Farkas's avatar Imre Farkas

Merge branch 'gaga5lala/227175-carrierwave-error-handle' into 'master'

Only log CarrierWave::IntegrityError without sending exception

See merge request gitlab-org/gitlab!43750
parents 7654fc46 0d5d772f
...@@ -48,6 +48,9 @@ module DesignManagement ...@@ -48,6 +48,9 @@ module DesignManagement
# Store and process the file # Store and process the file
action.image_v432x230.store!(raw_file) action.image_v432x230.store!(raw_file)
action.save! action.save!
rescue CarrierWave::IntegrityError => e
Gitlab::ErrorTracking.log_exception(e, project_id: project.id, design_id: action.design_id, version_id: action.version_id)
log_error(e.message)
rescue CarrierWave::UploadError => e rescue CarrierWave::UploadError => e
Gitlab::ErrorTracking.track_exception(e, project_id: project.id, design_id: action.design_id, version_id: action.version_id) Gitlab::ErrorTracking.track_exception(e, project_id: project.id, design_id: action.design_id, version_id: action.version_id)
log_error(e.message) log_error(e.message)
......
---
title: Log CarrierWave::IntegrityError without sending exception
merge_request: 43750
author: gaga5lala
type: other
...@@ -52,25 +52,50 @@ RSpec.describe DesignManagement::GenerateImageVersionsService do ...@@ -52,25 +52,50 @@ RSpec.describe DesignManagement::GenerateImageVersionsService do
end end
context 'when an error is encountered when generating the image versions' do context 'when an error is encountered when generating the image versions' do
before do context "CarrierWave::IntegrityError" do
expect_next_instance_of(DesignManagement::DesignV432x230Uploader) do |uploader| before do
expect(uploader).to receive(:cache!).and_raise(CarrierWave::DownloadError, 'foo') expect_next_instance_of(DesignManagement::DesignV432x230Uploader) do |uploader|
expect(uploader).to receive(:cache!).and_raise(CarrierWave::IntegrityError, 'foo')
end
end
it 'logs the exception' do
expect(Gitlab::ErrorTracking).to receive(:log_exception).with(
instance_of(CarrierWave::IntegrityError),
project_id: project.id, version_id: version.id, design_id: version.designs.first.id
)
described_class.new(version).execute
end end
end
it 'logs the error' do it 'logs the error' do
expect(Gitlab::AppLogger).to receive(:error).with('foo') expect(Gitlab::AppLogger).to receive(:error).with('foo')
described_class.new(version).execute described_class.new(version).execute
end
end end
it 'tracks the error' do context "CarrierWave::UploadError" do
expect(Gitlab::ErrorTracking).to receive(:track_exception).with( before do
instance_of(CarrierWave::DownloadError), expect_next_instance_of(DesignManagement::DesignV432x230Uploader) do |uploader|
project_id: project.id, version_id: version.id, design_id: version.designs.first.id expect(uploader).to receive(:cache!).and_raise(CarrierWave::UploadError, 'foo')
) end
end
described_class.new(version).execute it 'logs the error' do
expect(Gitlab::AppLogger).to receive(:error).with('foo')
described_class.new(version).execute
end
it 'tracks the error' do
expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
instance_of(CarrierWave::UploadError),
project_id: project.id, version_id: version.id, design_id: version.designs.first.id
)
described_class.new(version).execute
end
end 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