Update notification code
This commit is contained in:
parent
3f5191de6d
commit
2d652fcf5a
3 changed files with 9 additions and 12 deletions
|
@ -127,17 +127,15 @@ module Ci
|
|||
|
||||
def tick_runner_queue
|
||||
SecureRandom.hex.tap do |new_update|
|
||||
::Gitlab::Workhorse.ensure_and_notify(runner_queue_key, new_update,
|
||||
::Gitlab::Workhorse.set_key_and_notify(runner_queue_key, new_update,
|
||||
expire: RUNNER_QUEUE_EXPIRY_TIME, overwrite: true)
|
||||
end
|
||||
end
|
||||
|
||||
def ensure_runner_queue_value
|
||||
Gitlab::Redis.with do |redis|
|
||||
new_value = SecureRandom.hex
|
||||
::Gitlab::Workhorse.ensure_and_notify(runner_queue_key, new_value,
|
||||
expire: RUNNER_QUEUE_EXPIRY_TIME, overwrite: false)
|
||||
end
|
||||
new_value = SecureRandom.hex
|
||||
::Gitlab::Workhorse.set_key_and_notify(runner_queue_key, new_value,
|
||||
expire: RUNNER_QUEUE_EXPIRY_TIME, overwrite: false)
|
||||
end
|
||||
|
||||
def is_runner_queue_value_latest?(value)
|
||||
|
|
|
@ -155,12 +155,11 @@ module Gitlab
|
|||
Rails.root.join('.gitlab_workhorse_secret')
|
||||
end
|
||||
|
||||
def ensure_and_notify(key, value, expire: nil, overwrite: true)
|
||||
def set_key_and_notify(key, value, expire: nil, overwrite: true)
|
||||
Gitlab::Redis.with do |redis|
|
||||
result = redis.set(key, value, ex: expire, nx: !overwrite)
|
||||
if result
|
||||
payload = "#{key}=#{value}"
|
||||
redis.publish(NOTIFICATION_CHANNEL, payload)
|
||||
redis.publish(NOTIFICATION_CHANNEL, "#{key}=#{value}")
|
||||
value
|
||||
else
|
||||
redis.get(key)
|
||||
|
|
|
@ -200,11 +200,11 @@ describe Gitlab::Workhorse, lib: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '.ensure_and_notify' do
|
||||
describe '.set_key_and_notify' do
|
||||
let(:key) { 'test-key' }
|
||||
let(:value) { 'test-value' }
|
||||
|
||||
subject { described_class.ensure_and_notify(key, value, overwrite: overwrite) }
|
||||
subject { described_class.set_key_and_notify(key, value, overwrite: overwrite) }
|
||||
|
||||
shared_examples 'set and notify' do
|
||||
it 'set and return the same value' do
|
||||
|
@ -245,7 +245,7 @@ describe Gitlab::Workhorse, lib: true do
|
|||
is_expected.to eq(old_value)
|
||||
end
|
||||
|
||||
it 'set and notify' do
|
||||
it 'does not notify' do
|
||||
expect_any_instance_of(Redis).not_to receive(:publish)
|
||||
|
||||
subject
|
||||
|
|
Loading…
Reference in a new issue