Prevent auto-retry AccessDenied error from stopping transition to failed
This commit is contained in:
parent
ea5221aeb3
commit
a61761908f
2 changed files with 34 additions and 1 deletions
|
@ -140,7 +140,11 @@ module Ci
|
|||
next if build.retries_max.zero?
|
||||
|
||||
if build.retries_count < build.retries_max
|
||||
Ci::Build.retry(build, build.user)
|
||||
begin
|
||||
Ci::Build.retry(build, build.user)
|
||||
rescue Gitlab::Access::AccessDeniedError => ex
|
||||
Rails.logger.error "Unable to auto-retry job #{build.id}: #{ex}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -2065,6 +2065,35 @@ describe Ci::Build do
|
|||
|
||||
subject.drop!
|
||||
end
|
||||
|
||||
context 'when retry service raises Gitlab::Access::AccessDeniedError exception' do
|
||||
let(:retry_service) { Ci::RetryBuildService.new(subject.project, subject.user) }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(Ci::RetryBuildService)
|
||||
.to receive(:execute)
|
||||
.with(subject)
|
||||
.and_raise(Gitlab::Access::AccessDeniedError)
|
||||
allow(Rails.logger).to receive(:error)
|
||||
end
|
||||
|
||||
it 'handles raised exception' do
|
||||
expect { subject.drop! }.not_to raise_exception(Gitlab::Access::AccessDeniedError)
|
||||
end
|
||||
|
||||
it 'logs the error' do
|
||||
subject.drop!
|
||||
|
||||
expect(Rails.logger)
|
||||
.to have_received(:error)
|
||||
.with(a_string_matching("Unable to auto-retry job #{subject.id}"))
|
||||
end
|
||||
|
||||
it 'fails the job' do
|
||||
subject.drop!
|
||||
expect(subject.failed?).to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when build is not configured to be retried' do
|
||||
|
|
Loading…
Reference in a new issue