Skip to content
Snippets Groups Projects
Commit 583c12ac authored by Stan Hu's avatar Stan Hu
Browse files

Use persistent Redis cluster for Workhorse pub/sub notifications

Previously, in Omnibus, Workhorse expected to listen via the Redis
shared state cluster for the `workhorse:notifications` publish/subscribe
channel, but the Rails code was using the Sidekiq queue cluster for
this. To fix this inconsistency, we make the Rails code use the
persistent cluster, since we don't want Workhorse to be looking at
anything Sidekiq-related.
parent 3cc5535c
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -264,7 +264,7 @@ module Ci
private
 
def cleanup_runner_queue
Gitlab::Redis::Queues.with do |redis|
Gitlab::Redis::SharedState.with do |redis|
redis.del(runner_queue_key)
end
end
Loading
Loading
---
title: Use persistent Redis cluster for Workhorse pub/sub notifications
merge_request: 30990
author:
type: fixed
Loading
Loading
@@ -221,7 +221,7 @@ module Gitlab
end
 
def set_key_and_notify(key, value, expire: nil, overwrite: true)
Gitlab::Redis::Queues.with do |redis|
Gitlab::Redis::SharedState.with do |redis|
result = redis.set(key, value, ex: expire, nx: !overwrite)
if result
redis.publish(NOTIFICATION_CHANNEL, "#{key}=#{value}")
Loading
Loading
Loading
Loading
@@ -404,6 +404,7 @@ describe Gitlab::Workhorse do
end
 
it 'set and notify' do
expect(Gitlab::Redis::SharedState).to receive(:with).and_call_original
expect_any_instance_of(::Redis).to receive(:publish)
.with(described_class::NOTIFICATION_CHANNEL, "test-key=test-value")
 
Loading
Loading
Loading
Loading
@@ -554,7 +554,7 @@ describe Ci::Runner do
end
 
def expect_value_in_queues
Gitlab::Redis::Queues.with do |redis|
Gitlab::Redis::SharedState.with do |redis|
runner_queue_key = runner.send(:runner_queue_key)
expect(redis.get(runner_queue_key))
end
Loading
Loading
@@ -627,7 +627,7 @@ describe Ci::Runner do
end
 
it 'cleans up the queue' do
Gitlab::Redis::Queues.with do |redis|
Gitlab::Redis::SharedState.with do |redis|
expect(redis.get(queue_key)).to be_nil
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment