Gracefully handle the deletion of non-existing runners
This commit is contained in:
@ -101,6 +101,8 @@ class Runner::Strategy::Poseidon < Runner::Strategy
|
||||
Rails.logger.debug { "#{Time.zone.now.getutc.inspect}: Destroying runner at #{runner_url}" }
|
||||
response = self.class.http_connection.delete runner_url
|
||||
self.class.handle_error response unless response.status == 204
|
||||
rescue Runner::Error::RunnerNotFound
|
||||
Rails.logger.debug { "#{Time.zone.now.getutc.inspect}: Runner not found, nothing to destroy" }
|
||||
rescue Faraday::Error => e
|
||||
raise Runner::Error::FaradayError.new("Request to Poseidon failed: #{e.inspect}")
|
||||
ensure
|
||||
|
@ -312,8 +312,15 @@ describe Runner::Strategy::Poseidon do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when Poseidon returns NotFound (404)' do
|
||||
let(:response_status) { 404 }
|
||||
|
||||
it 'raises an error' do
|
||||
expect { action.call }.not_to raise_error(Runner::Error::RunnerNotFound)
|
||||
end
|
||||
end
|
||||
|
||||
include_examples 'Unauthorized (401) error handling'
|
||||
include_examples 'NotFound (404) error handling'
|
||||
include_examples 'InternalServerError (500) error handling'
|
||||
include_examples 'unknown response status error handling'
|
||||
include_examples 'Faraday error handling'
|
||||
|
Reference in New Issue
Block a user