don't allow one error to stop all crons from running
This commit is contained in:
parent
abe7b13605
commit
779b6a569e
|
@ -8,16 +8,17 @@ module Travis::API::V3
|
||||||
def start_all()
|
def start_all()
|
||||||
puts "reviewing #{Models::Cron.count} crons."
|
puts "reviewing #{Models::Cron.count} crons."
|
||||||
Models::Cron.all.select do |cron|
|
Models::Cron.all.select do |cron|
|
||||||
@cron = cron
|
begin
|
||||||
ne = cron.next_enqueuing
|
@cron = cron
|
||||||
puts "Next enqueuing: #{ne}, time now: #{Time.now}, will it run? #{ne <= Time.now}"
|
ne = cron.next_enqueuing
|
||||||
start(cron) if ne <= Time.now
|
puts "Next enqueuing: #{ne}, time now: #{Time.now}, will it run? #{ne <= Time.now}"
|
||||||
|
start(cron) if ne <= Time.now
|
||||||
|
rescue => e
|
||||||
|
Raven.capture_exception(e, tags: { 'cron_id' => @cron.try(:id) })
|
||||||
|
sleep(10)
|
||||||
|
next
|
||||||
|
end
|
||||||
end
|
end
|
||||||
rescue => e
|
|
||||||
puts "bad things happened"
|
|
||||||
puts e.inspect
|
|
||||||
puts Raven.capture_exception(e, tags: { 'cron_id' => @cron.try(:id) })
|
|
||||||
sleep(10)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def start(cron)
|
def start(cron)
|
||||||
|
|
|
@ -4,6 +4,7 @@ describe Travis::API::V3::Queries::Crons do
|
||||||
let(:user) { Travis::API::V3::Models::User.find_by_login('svenfuchs') }
|
let(:user) { Travis::API::V3::Models::User.find_by_login('svenfuchs') }
|
||||||
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: 'svenfuchs', name: 'minimal').first }
|
||||||
let(:existing_branch) { Travis::API::V3::Models::Branch.create(repository: repo, name: 'cron-test-existing', exists_on_github: true) }
|
let(:existing_branch) { Travis::API::V3::Models::Branch.create(repository: repo, name: 'cron-test-existing', exists_on_github: true) }
|
||||||
|
let(:existing_branch2) { Travis::API::V3::Models::Branch.create(repository: repo, name: 'cron-test-existing2', exists_on_github: true) }
|
||||||
let(:non_existing_branch) { Travis::API::V3::Models::Branch.create(repository: repo, name: 'cron-test-non-existing', exists_on_github: false) }
|
let(:non_existing_branch) { Travis::API::V3::Models::Branch.create(repository: repo, name: 'cron-test-non-existing', exists_on_github: false) }
|
||||||
let(:query) { Travis::API::V3::Queries::Crons.new({}, 'Overview')
|
let(:query) { Travis::API::V3::Queries::Crons.new({}, 'Overview')
|
||||||
}
|
}
|
||||||
|
@ -25,9 +26,23 @@ describe Travis::API::V3::Queries::Crons do
|
||||||
it 'enques error into a thread' do
|
it 'enques error into a thread' do
|
||||||
cron = Travis::API::V3::Models::Cron.create(branch_id: existing_branch.id, interval: 'daily', disable_by_build: false)
|
cron = Travis::API::V3::Models::Cron.create(branch_id: existing_branch.id, interval: 'daily', disable_by_build: false)
|
||||||
error = StandardError.new('Konstantin broke all the thingz!')
|
error = StandardError.new('Konstantin broke all the thingz!')
|
||||||
|
Travis::API::V3::Queries::Crons.any_instance.expects(:sleep).with(10)
|
||||||
Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error)
|
Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error)
|
||||||
Raven.expects(:capture_exception).with(error, tags: {'cron_id' => cron.id })
|
Raven.expects(:capture_exception).with(error, tags: {'cron_id' => cron.id })
|
||||||
query.start_all
|
query.start_all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'continues running crons if one breaks' do
|
||||||
|
cron = Travis::API::V3::Models::Cron.create(branch_id: existing_branch.id, interval: 'daily', disable_by_build: false)
|
||||||
|
cron2 = Travis::API::V3::Models::Cron.create(branch_id: existing_branch2.id, interval: 'daily', disable_by_build: false)
|
||||||
|
|
||||||
|
error = StandardError.new('Konstantin broke all the thingz!')
|
||||||
|
Travis::API::V3::Models::Cron.any_instance.stubs(:branch).raises(error)
|
||||||
|
|
||||||
|
Travis::API::V3::Queries::Crons.any_instance.expects(:sleep).twice.with(10)
|
||||||
|
Raven.expects(:capture_exception).with(error, tags: {'cron_id' => cron.id })
|
||||||
|
Raven.expects(:capture_exception).with(error, tags: {'cron_id' => cron2.id })
|
||||||
|
query.start_all
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user