Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-11-18 03:10:43 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-11-18 03:10:43 +0300
commitda4f753e76a4fd162d35c0c79d1241583e88b685 (patch)
tree3e9a8ebb90efeceaebe9a85cef6cb8410e850c9b /vendor
parent20082d14c8a188514703824d59f1a1a524477b68 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'vendor')
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/Gemfile1
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/Gemfile.lock68
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/README.md2
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/gitlab-sidekiq-fetcher.gemspec4
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/base_reliable_fetch.rb26
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/interrupted_set.rb2
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/semi_reliable_fetch.rb15
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/spec/base_reliable_fetch_spec.rb38
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/spec/fetch_shared_examples.rb73
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/spec/reliable_fetch_spec.rb1
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb19
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/spec/spec_helper.rb2
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/tests/interruption/config.rb1
-rw-r--r--vendor/gems/sidekiq-reliable-fetch/tests/reliability/config.rb1
14 files changed, 155 insertions, 98 deletions
diff --git a/vendor/gems/sidekiq-reliable-fetch/Gemfile b/vendor/gems/sidekiq-reliable-fetch/Gemfile
index 3bed294f56f..8f86b2fe0b6 100644
--- a/vendor/gems/sidekiq-reliable-fetch/Gemfile
+++ b/vendor/gems/sidekiq-reliable-fetch/Gemfile
@@ -11,4 +11,5 @@ group :test do
gem "pry"
gem 'simplecov', require: false
gem 'stub_env', '~> 1.0'
+ gem 'redis', '~> 4.8'
end
diff --git a/vendor/gems/sidekiq-reliable-fetch/Gemfile.lock b/vendor/gems/sidekiq-reliable-fetch/Gemfile.lock
index aeb163db018..484370fdfcc 100644
--- a/vendor/gems/sidekiq-reliable-fetch/Gemfile.lock
+++ b/vendor/gems/sidekiq-reliable-fetch/Gemfile.lock
@@ -1,46 +1,51 @@
PATH
remote: .
specs:
- gitlab-sidekiq-fetcher (0.10.0)
+ gitlab-sidekiq-fetcher (0.11.0)
json (>= 2.5)
- sidekiq (~> 6.1)
+ sidekiq (~> 7.0)
GEM
remote: https://rubygems.org/
specs:
- coderay (1.1.2)
- connection_pool (2.4.0)
- diff-lcs (1.3)
- docile (1.3.1)
- json (2.5.1)
- method_source (0.9.0)
- pry (0.11.3)
- coderay (~> 1.1.0)
- method_source (~> 0.9.0)
- rack (2.2.6.4)
+ coderay (1.1.3)
+ concurrent-ruby (1.2.2)
+ connection_pool (2.4.1)
+ diff-lcs (1.5.0)
+ docile (1.4.0)
+ json (2.6.3)
+ method_source (1.0.0)
+ pry (0.14.2)
+ coderay (~> 1.1)
+ method_source (~> 1.0)
+ rack (3.0.8)
redis (4.8.1)
- rspec (3.8.0)
- rspec-core (~> 3.8.0)
- rspec-expectations (~> 3.8.0)
- rspec-mocks (~> 3.8.0)
- rspec-core (3.8.0)
- rspec-support (~> 3.8.0)
- rspec-expectations (3.8.1)
+ redis-client (0.18.0)
+ connection_pool
+ rspec (3.12.0)
+ rspec-core (~> 3.12.0)
+ rspec-expectations (~> 3.12.0)
+ rspec-mocks (~> 3.12.0)
+ rspec-core (3.12.2)
+ rspec-support (~> 3.12.0)
+ rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.8.0)
- rspec-mocks (3.8.0)
+ rspec-support (~> 3.12.0)
+ rspec-mocks (3.12.6)
diff-lcs (>= 1.2.0, < 2.0)
- rspec-support (~> 3.8.0)
- rspec-support (3.8.0)
- sidekiq (6.5.8)
- connection_pool (>= 2.2.5, < 3)
- rack (~> 2.0)
- redis (>= 4.5.0, < 5)
- simplecov (0.16.1)
+ rspec-support (~> 3.12.0)
+ rspec-support (3.12.1)
+ sidekiq (7.2.0)
+ concurrent-ruby (< 2)
+ connection_pool (>= 2.3.0)
+ rack (>= 2.2.4)
+ redis-client (>= 0.14.0)
+ simplecov (0.22.0)
docile (~> 1.1)
- json (>= 1.8, < 3)
- simplecov-html (~> 0.10.0)
- simplecov-html (0.10.2)
+ simplecov-html (~> 0.11)
+ simplecov_json_formatter (~> 0.1)
+ simplecov-html (0.12.3)
+ simplecov_json_formatter (0.1.4)
stub_env (1.0.4)
rspec (>= 2.0, < 4.0)
@@ -50,6 +55,7 @@ PLATFORMS
DEPENDENCIES
gitlab-sidekiq-fetcher!
pry
+ redis (~> 4.8)
rspec (~> 3)
simplecov
stub_env (~> 1.0)
diff --git a/vendor/gems/sidekiq-reliable-fetch/README.md b/vendor/gems/sidekiq-reliable-fetch/README.md
index 4c7029e3955..5e218a76cd5 100644
--- a/vendor/gems/sidekiq-reliable-fetch/README.md
+++ b/vendor/gems/sidekiq-reliable-fetch/README.md
@@ -6,7 +6,7 @@ fetches from Redis.
It's based on https://github.com/TEA-ebook/sidekiq-reliable-fetch.
-**IMPORTANT NOTE:** Since version `0.7.0` this gem works only with `sidekiq >= 6.1` (which introduced Fetch API breaking changes). Please use version `~> 0.5` if you use older version of the `sidekiq` .
+**IMPORTANT NOTE:** Since version `0.11.0` this gem works only with `sidekiq >= 7` (which introduced Fetch API breaking changes). Please use version `~> 0.10` if you use older version of the `sidekiq` .
**UPGRADE NOTE:** If upgrading from 0.7.0, strongly consider a full deployed step on 0.7.1 before 0.8.0; that fixes a bug in the queue name validation that will hit if sidekiq nodes running 0.7.0 see working queues named by 0.8.0. See https://gitlab.com/gitlab-org/sidekiq-reliable-fetch/-/merge_requests/22
diff --git a/vendor/gems/sidekiq-reliable-fetch/gitlab-sidekiq-fetcher.gemspec b/vendor/gems/sidekiq-reliable-fetch/gitlab-sidekiq-fetcher.gemspec
index b656267003a..df89abca4ac 100644
--- a/vendor/gems/sidekiq-reliable-fetch/gitlab-sidekiq-fetcher.gemspec
+++ b/vendor/gems/sidekiq-reliable-fetch/gitlab-sidekiq-fetcher.gemspec
@@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = 'gitlab-sidekiq-fetcher'
- s.version = '0.10.0'
+ s.version = '0.11.0'
s.authors = ['TEA', 'GitLab']
s.email = 'valery@gitlab.com'
s.license = 'LGPL-3.0'
@@ -10,6 +10,6 @@ Gem::Specification.new do |s|
s.require_paths = ['lib']
s.files = Dir.glob('lib/**/*.*')
s.test_files = Dir.glob('{spec,tests}/**/*.*')
- s.add_dependency 'sidekiq', '~> 6.1'
+ s.add_dependency 'sidekiq', '~> 7.0'
s.add_runtime_dependency 'json', '>= 2.5'
end
diff --git a/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/base_reliable_fetch.rb b/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/base_reliable_fetch.rb
index 006aad87abe..7ae9bcf63e4 100644
--- a/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/base_reliable_fetch.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/base_reliable_fetch.rb
@@ -53,7 +53,7 @@ module Sidekiq
Sidekiq::ReliableFetch
end
- config[:fetch] = fetch_strategy.new(config)
+ config[:fetch_class] = fetch_strategy
Sidekiq.logger.info('GitLab reliable fetch activated!')
@@ -115,18 +115,18 @@ module Sidekiq
attr_reader :cleanup_interval, :last_try_to_take_lease_at, :lease_interval,
:queues, :use_semi_reliable_fetch,
- :strictly_ordered_queues
+ :strictly_ordered_queues, :config
- def initialize(options)
- raise ArgumentError, 'missing queue list' unless options[:queues]
+ def initialize(capsule)
+ raise ArgumentError, 'missing queue list' unless capsule.config.queues
- @config = options
+ @config = capsule.config
@interrupted_set = Sidekiq::InterruptedSet.new
- @cleanup_interval = options.fetch(:cleanup_interval, DEFAULT_CLEANUP_INTERVAL)
- @lease_interval = options.fetch(:lease_interval, DEFAULT_LEASE_INTERVAL)
+ @cleanup_interval = config.fetch(:cleanup_interval, DEFAULT_CLEANUP_INTERVAL)
+ @lease_interval = config.fetch(:lease_interval, DEFAULT_LEASE_INTERVAL)
@last_try_to_take_lease_at = 0
- @strictly_ordered_queues = !!options[:strict]
- @queues = options[:queues].map { |q| "queue:#{q}" }
+ @strictly_ordered_queues = !!config[:strict]
+ @queues = config.queues.map { |q| "queue:#{q}" }
end
def retrieve_work
@@ -140,7 +140,7 @@ module Sidekiq
"#{self.class} does not implement #{__method__}"
end
- def bulk_requeue(inprogress, _options)
+ def bulk_requeue(inprogress)
return if inprogress.empty?
Sidekiq.redis do |conn|
@@ -202,7 +202,7 @@ module Sidekiq
Sidekiq.logger.info('Cleaning working queues')
Sidekiq.redis do |conn|
- conn.scan_each(match: "#{WORKING_QUEUE_PREFIX}:queue:*", count: SCAN_COUNT) do |key|
+ conn.scan(match: "#{WORKING_QUEUE_PREFIX}:queue:*", count: SCAN_COUNT) do |key|
original_queue, identity = extract_queue_and_identity(key)
next if original_queue.nil? || identity.nil?
@@ -234,7 +234,7 @@ module Sidekiq
rescue NameError
end
- max_retries_after_interruption ||= @config[:max_retries_after_interruption]
+ max_retries_after_interruption ||= config[:max_retries_after_interruption]
max_retries_after_interruption ||= DEFAULT_MAX_RETRIES_AFTER_INTERRUPTION
max_retries_after_interruption
end
@@ -263,7 +263,7 @@ module Sidekiq
@last_try_to_take_lease_at = Time.now.to_f
Sidekiq.redis do |conn|
- conn.set(LEASE_KEY, 1, nx: true, ex: cleanup_interval)
+ conn.set(LEASE_KEY, 1, 'nx', 'ex', cleanup_interval)
end
end
diff --git a/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/interrupted_set.rb b/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/interrupted_set.rb
index 2fc7a10f9d0..799e744957e 100644
--- a/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/interrupted_set.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/interrupted_set.rb
@@ -45,7 +45,7 @@ module Sidekiq
end
def self.options
- Sidekiq.respond_to?(:[]) ? Sidekiq : Sidekiq.options
+ Sidekiq.default_configuration
end
end
end
diff --git a/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/semi_reliable_fetch.rb b/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/semi_reliable_fetch.rb
index 91b41501374..7beb83fea12 100644
--- a/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/semi_reliable_fetch.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/lib/sidekiq/semi_reliable_fetch.rb
@@ -7,7 +7,7 @@ module Sidekiq
# for semi-reliable fetch.
DEFAULT_SEMI_RELIABLE_FETCH_TIMEOUT = 2 # seconds
- def initialize(options)
+ def initialize(capsule)
super
@queues = @queues.uniq
@@ -16,7 +16,7 @@ module Sidekiq
private
def retrieve_unit_of_work
- work = Sidekiq.redis { |conn| conn.brpop(*queues_cmd, timeout: semi_reliable_fetch_timeout) }
+ work = brpop_with_sidekiq
return unless work
queue, job = work
@@ -29,6 +29,17 @@ module Sidekiq
unit_of_work
end
+ def brpop_with_sidekiq
+ Sidekiq.redis do |conn|
+ conn.blocking_call(
+ conn.read_timeout + semi_reliable_fetch_timeout,
+ "brpop",
+ *queues_cmd,
+ semi_reliable_fetch_timeout
+ )
+ end
+ end
+
def queues_cmd
if strictly_ordered_queues
@queues
diff --git a/vendor/gems/sidekiq-reliable-fetch/spec/base_reliable_fetch_spec.rb b/vendor/gems/sidekiq-reliable-fetch/spec/base_reliable_fetch_spec.rb
index 32e62925aaf..27fb86d2a8e 100644
--- a/vendor/gems/sidekiq-reliable-fetch/spec/base_reliable_fetch_spec.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/spec/base_reliable_fetch_spec.rb
@@ -3,14 +3,20 @@ require 'fetch_shared_examples'
require 'sidekiq/base_reliable_fetch'
require 'sidekiq/reliable_fetch'
require 'sidekiq/semi_reliable_fetch'
+require 'sidekiq/capsule'
describe Sidekiq::BaseReliableFetch do
let(:job) { Sidekiq.dump_json(class: 'Bob', args: [1, 2, 'foo']) }
+ let(:queues) { ['foo'] }
+ let(:options) { { queues: queues } }
+ let(:config) { Sidekiq::Config.new(options) }
+ let(:capsule) { Sidekiq::Capsule.new("default", config) }
+ let(:fetcher) { Sidekiq::ReliableFetch.new(capsule) }
before { Sidekiq.redis(&:flushdb) }
describe 'UnitOfWork' do
- let(:fetcher) { Sidekiq::ReliableFetch.new(queues: ['foo']) }
+ before { config.queues = queues }
describe '#requeue' do
it 'requeues job' do
@@ -40,14 +46,16 @@ describe Sidekiq::BaseReliableFetch do
end
describe '#bulk_requeue' do
- let(:options) { { queues: %w[foo bar] } }
+ let(:queues) { %w[foo bar] }
let!(:queue1) { Sidekiq::Queue.new('foo') }
let!(:queue2) { Sidekiq::Queue.new('bar') }
+ before { config.queues = queues }
+
it 'requeues the bulk' do
uow = described_class::UnitOfWork
jobs = [ uow.new('queue:foo', job), uow.new('queue:foo', job), uow.new('queue:bar', job) ]
- described_class.new(options).bulk_requeue(jobs, nil)
+ described_class.new(capsule).bulk_requeue(jobs)
expect(queue1.size).to eq 2
expect(queue2.size).to eq 1
@@ -57,24 +65,26 @@ describe Sidekiq::BaseReliableFetch do
uow = described_class::UnitOfWork
interrupted_job = Sidekiq.dump_json(class: 'Bob', args: [1, 2, 'foo'], interrupted_count: 3)
jobs = [ uow.new('queue:foo', interrupted_job), uow.new('queue:foo', job), uow.new('queue:bar', job) ]
- described_class.new(options).bulk_requeue(jobs, nil)
+ described_class.new(capsule).bulk_requeue(jobs)
expect(queue1.size).to eq 1
expect(queue2.size).to eq 1
expect(Sidekiq::InterruptedSet.new.size).to eq 1
end
- it 'does not put jobs into interrupted queue if it is disabled' do
- options[:max_retries_after_interruption] = -1
+ context 'when max_retries_after_interruption is disabled' do
+ let(:options) { { queues: queues, max_retries_after_interruption: -1 } }
- uow = described_class::UnitOfWork
- interrupted_job = Sidekiq.dump_json(class: 'Bob', args: [1, 2, 'foo'], interrupted_count: 3)
- jobs = [ uow.new('queue:foo', interrupted_job), uow.new('queue:foo', job), uow.new('queue:bar', job) ]
- described_class.new(options).bulk_requeue(jobs, nil)
+ it 'does not put jobs into interrupted queue' do
+ uow = described_class::UnitOfWork
+ interrupted_job = Sidekiq.dump_json(class: 'Bob', args: [1, 2, 'foo'], interrupted_count: 3)
+ jobs = [ uow.new('queue:foo', interrupted_job), uow.new('queue:foo', job), uow.new('queue:bar', job) ]
+ described_class.new(capsule).bulk_requeue(jobs)
- expect(queue1.size).to eq 2
- expect(queue2.size).to eq 1
- expect(Sidekiq::InterruptedSet.new.size).to eq 0
+ expect(queue1.size).to eq 2
+ expect(queue2.size).to eq 1
+ expect(Sidekiq::InterruptedSet.new.size).to eq 0
+ end
end
it 'does not put jobs into interrupted queue if it is disabled on the worker' do
@@ -83,7 +93,7 @@ describe Sidekiq::BaseReliableFetch do
uow = described_class::UnitOfWork
interrupted_job = Sidekiq.dump_json(class: 'Bob', args: [1, 2, 'foo'], interrupted_count: 3)
jobs = [ uow.new('queue:foo', interrupted_job), uow.new('queue:foo', job), uow.new('queue:bar', job) ]
- described_class.new(options).bulk_requeue(jobs, nil)
+ described_class.new(capsule).bulk_requeue(jobs)
expect(queue1.size).to eq 2
expect(queue2.size).to eq 1
diff --git a/vendor/gems/sidekiq-reliable-fetch/spec/fetch_shared_examples.rb b/vendor/gems/sidekiq-reliable-fetch/spec/fetch_shared_examples.rb
index df7f715f2f9..11489a37b27 100644
--- a/vendor/gems/sidekiq-reliable-fetch/spec/fetch_shared_examples.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/spec/fetch_shared_examples.rb
@@ -1,54 +1,70 @@
shared_examples 'a Sidekiq fetcher' do
let(:queues) { ['assigned'] }
+ let(:options) { { queues: queues } }
+ let(:config) { Sidekiq::Config.new(options) }
+ let(:capsule) { Sidekiq::Capsule.new("default", config) }
- before { Sidekiq.redis(&:flushdb) }
+ before do
+ config.queues = queues
+ Sidekiq.redis(&:flushdb)
+ end
describe '#retrieve_work' do
let(:job) { Sidekiq.dump_json(class: 'Bob', args: [1, 2, 'foo']) }
- let(:fetcher) { described_class.new(queues: queues) }
+ let(:fetcher) { described_class.new(capsule) }
it 'does not clean up orphaned jobs more than once per cleanup interval' do
- Sidekiq.redis = Sidekiq::RedisConnection.create(url: REDIS_URL, size: 10)
-
- expect(fetcher).to receive(:clean_working_queues!).once
+ Sidekiq::Client.via(Sidekiq::RedisConnection.create(url: REDIS_URL, size: 10)) do
+ expect(fetcher).to receive(:clean_working_queues!).once
- threads = 10.times.map do
- Thread.new do
- fetcher.retrieve_work
+ threads = 10.times.map do
+ Thread.new do
+ fetcher.retrieve_work
+ end
end
- end
- threads.map(&:join)
+ threads.map(&:join)
+ end
end
- it 'retrieves by order when strictly order is enabled' do
- fetcher = described_class.new(strict: true, queues: ['first', 'second'])
+ context 'when strictly order is enabled' do
+ let(:queues) { ['first', 'second'] }
+ let(:options) { { strict: true, queues: queues } }
- Sidekiq.redis do |conn|
- conn.rpush('queue:first', ['msg3', 'msg2', 'msg1'])
- conn.rpush('queue:second', 'msg4')
- end
+ it 'retrieves by order' do
+ fetcher = described_class.new(capsule)
+
+ Sidekiq.redis do |conn|
+ conn.rpush('queue:first', ['msg3', 'msg2', 'msg1'])
+ conn.rpush('queue:second', 'msg4')
+ end
- jobs = (1..4).map { fetcher.retrieve_work.job }
+ jobs = (1..4).map { fetcher.retrieve_work.job }
- expect(jobs).to eq ['msg1', 'msg2', 'msg3', 'msg4']
+ expect(jobs).to eq ['msg1', 'msg2', 'msg3', 'msg4']
+ end
end
- it 'does not starve any queue when queues are not strictly ordered' do
- fetcher = described_class.new(queues: ['first', 'second'])
+ context 'when queues are not strictly ordered' do
+ let(:queues) { ['first', 'second'] }
- Sidekiq.redis do |conn|
- conn.rpush('queue:first', (1..200).map { |i| "msg#{i}" })
- conn.rpush('queue:second', 'this_job_should_not_stuck')
- end
+ it 'does not starve any queue' do
+ fetcher = described_class.new(capsule)
- jobs = (1..100).map { fetcher.retrieve_work.job }
+ Sidekiq.redis do |conn|
+ conn.rpush('queue:first', (1..200).map { |i| "msg#{i}" })
+ conn.rpush('queue:second', 'this_job_should_not_stuck')
+ end
+
+ jobs = (1..100).map { fetcher.retrieve_work.job }
- expect(jobs).to include 'this_job_should_not_stuck'
+ expect(jobs).to include 'this_job_should_not_stuck'
+ end
end
shared_examples "basic queue handling" do |queue|
- let (:fetcher) { described_class.new(queues: [queue]) }
+ let(:queues) { [queue] }
+ let(:fetcher) { described_class.new(capsule) }
it 'retrieves the job and puts it to working queue' do
Sidekiq.redis { |conn| conn.rpush("queue:#{queue}", job) }
@@ -150,7 +166,8 @@ shared_examples 'a Sidekiq fetcher' do
context 'with short cleanup interval' do
let(:short_interval) { 1 }
- let(:fetcher) { described_class.new(queues: queues, lease_interval: short_interval, cleanup_interval: short_interval) }
+ let(:options) { { queues: queues, lease_interval: short_interval, cleanup_interval: short_interval } }
+ let(:fetcher) { described_class.new(capsule) }
it 'requeues when there is no heartbeat' do
Sidekiq.redis { |conn| conn.rpush('queue:assigned', job) }
diff --git a/vendor/gems/sidekiq-reliable-fetch/spec/reliable_fetch_spec.rb b/vendor/gems/sidekiq-reliable-fetch/spec/reliable_fetch_spec.rb
index bdef04a021f..b919d610aca 100644
--- a/vendor/gems/sidekiq-reliable-fetch/spec/reliable_fetch_spec.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/spec/reliable_fetch_spec.rb
@@ -2,6 +2,7 @@ require 'spec_helper'
require 'fetch_shared_examples'
require 'sidekiq/base_reliable_fetch'
require 'sidekiq/reliable_fetch'
+require 'sidekiq/capsule'
describe Sidekiq::ReliableFetch do
include_examples 'a Sidekiq fetcher'
diff --git a/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb b/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb
index 60cd81ba913..8b167ae7ee5 100644
--- a/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb
@@ -2,6 +2,9 @@ require 'spec_helper'
require 'fetch_shared_examples'
require 'sidekiq/base_reliable_fetch'
require 'sidekiq/semi_reliable_fetch'
+require 'sidekiq/capsule'
+require 'sidekiq/config'
+require 'redis'
describe Sidekiq::SemiReliableFetch do
include_examples 'a Sidekiq fetcher'
@@ -9,7 +12,11 @@ describe Sidekiq::SemiReliableFetch do
describe '#retrieve_work' do
let(:queues) { ['stuff_to_do'] }
let(:options) { { queues: queues } }
- let(:fetcher) { described_class.new(options) }
+ let(:config) { Sidekiq::Config.new(options) }
+ let(:capsule) { Sidekiq::Capsule.new("default", config) }
+ let(:fetcher) { described_class.new(capsule) }
+
+ before { config.queues = queues }
context 'timeout config' do
before do
@@ -20,8 +27,9 @@ describe Sidekiq::SemiReliableFetch do
let(:timeout) { nil }
it 'brpops with the default timeout timeout' do
- Sidekiq.redis do |connection|
- expect(connection).to receive(:brpop).with("queue:stuff_to_do", { timeout: 2 }).once.and_call_original
+ Sidekiq.redis do |conn|
+ expect(conn).to receive(:blocking_call)
+ .with(conn.read_timeout + 2, 'brpop', 'queue:stuff_to_do', 2).once.and_call_original
fetcher.retrieve_work
end
@@ -32,8 +40,9 @@ describe Sidekiq::SemiReliableFetch do
let(:timeout) { '5' }
it 'brpops with the default timeout timeout' do
- Sidekiq.redis do |connection|
- expect(connection).to receive(:brpop).with("queue:stuff_to_do", { timeout: 5 }).once.and_call_original
+ Sidekiq.redis do |conn|
+ expect(conn).to receive(:blocking_call)
+ .with(conn.read_timeout + 5, 'brpop', 'queue:stuff_to_do', 5).once.and_call_original
fetcher.retrieve_work
end
diff --git a/vendor/gems/sidekiq-reliable-fetch/spec/spec_helper.rb b/vendor/gems/sidekiq-reliable-fetch/spec/spec_helper.rb
index 45418571579..ab1c5317ff3 100644
--- a/vendor/gems/sidekiq-reliable-fetch/spec/spec_helper.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/spec/spec_helper.rb
@@ -9,7 +9,7 @@ SimpleCov.start
REDIS_URL = ENV['REDIS_URL'] || 'redis://localhost:6379/10'
Sidekiq.configure_client do |config|
- config.redis = { url: REDIS_URL }
+ config.redis = { url: REDIS_URL, read_timeout: 5 }
end
Sidekiq.logger.level = Logger::ERROR
diff --git a/vendor/gems/sidekiq-reliable-fetch/tests/interruption/config.rb b/vendor/gems/sidekiq-reliable-fetch/tests/interruption/config.rb
index f69cca96d80..a8f66a5f041 100644
--- a/vendor/gems/sidekiq-reliable-fetch/tests/interruption/config.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/tests/interruption/config.rb
@@ -14,6 +14,7 @@ Sidekiq.configure_server do |config|
# These will be ignored for :basic
config[:cleanup_interval] = TEST_CLEANUP_INTERVAL
config[:lease_interval] = TEST_LEASE_INTERVAL
+ config[:queues] = ['default']
Sidekiq::ReliableFetch.setup_reliable_fetch!(config)
end
diff --git a/vendor/gems/sidekiq-reliable-fetch/tests/reliability/config.rb b/vendor/gems/sidekiq-reliable-fetch/tests/reliability/config.rb
index 05ffcfca9b5..c516112ccb7 100644
--- a/vendor/gems/sidekiq-reliable-fetch/tests/reliability/config.rb
+++ b/vendor/gems/sidekiq-reliable-fetch/tests/reliability/config.rb
@@ -23,6 +23,7 @@ Sidekiq.configure_server do |config|
# These will be ignored for :basic
config[:cleanup_interval] = TEST_CLEANUP_INTERVAL
config[:lease_interval] = TEST_LEASE_INTERVAL
+ config[:queues] = ['default']
Sidekiq::ReliableFetch.setup_reliable_fetch!(config)
end