Remove the key from the queue when runner is deleted

This commit is contained in:
Lin Jen-Shin 2017-01-21 02:38:58 +08:00
parent 7a109402a8
commit 7a4d723e6b
2 changed files with 27 additions and 0 deletions

View file

@ -38,6 +38,8 @@ module Ci
acts_as_taggable acts_as_taggable
after_destroy :cleanup_runner_queue
# Searches for runners matching the given query. # Searches for runners matching the given query.
# #
# This method uses ILIKE on PostgreSQL and LIKE on MySQL. # This method uses ILIKE on PostgreSQL and LIKE on MySQL.
@ -143,6 +145,12 @@ module Ci
private private
def cleanup_runner_queue
Gitlab::Redis.with do |redis|
redis.del(runner_queue_key)
end
end
def runner_queue_key def runner_queue_key
"runner:build_queue:#{self.token}" "runner:build_queue:#{self.token}"
end end

View file

@ -319,6 +319,25 @@ describe Ci::Runner, models: true do
end end
end end
describe '#destroy' do
let(:runner) { create(:ci_runner) }
context 'when there is a tick in the queue' do
let!(:queue_key) { runner.send(:runner_queue_key) }
before do
runner.tick_runner_queue
runner.destroy
end
it 'cleans up the queue' do
Gitlab::Redis.with do |redis|
expect(redis.get(queue_key)).to be_nil
end
end
end
end
describe '.assignable_for' do describe '.assignable_for' do
let(:runner) { create(:ci_runner) } let(:runner) { create(:ci_runner) }
let(:project) { create(:project) } let(:project) { create(:project) }