diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2017-01-21 02:38:58 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-01-21 02:38:58 +0800 |
commit | 7a4d723e6ba287fe792dca0a8ddc3d8a77b1876c (patch) | |
tree | 3736e8a74bddc028b9588510bcb87bb535ac4c5c | |
parent | 7a109402a866db1c84ef9af1c14e148ec944aa22 (diff) | |
download | gitlab-ce-7a4d723e6ba287fe792dca0a8ddc3d8a77b1876c.tar.gz |
Remove the key from the queue when runner is deleted
-rw-r--r-- | app/models/ci/runner.rb | 8 | ||||
-rw-r--r-- | spec/models/ci/runner_spec.rb | 19 |
2 files changed, 27 insertions, 0 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb index b4760b5baaa..f30253eefe3 100644 --- a/app/models/ci/runner.rb +++ b/app/models/ci/runner.rb @@ -38,6 +38,8 @@ module Ci acts_as_taggable + after_destroy :cleanup_runner_queue + # Searches for runners matching the given query. # # This method uses ILIKE on PostgreSQL and LIKE on MySQL. @@ -143,6 +145,12 @@ module Ci private + def cleanup_runner_queue + Gitlab::Redis.with do |redis| + redis.del(runner_queue_key) + end + end + def runner_queue_key "runner:build_queue:#{self.token}" end diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index 7b993a454b7..6283673d7ae 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -319,6 +319,25 @@ describe Ci::Runner, models: true do 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 let(:runner) { create(:ci_runner) } let(:project) { create(:project) } |