1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Use redis' default driver (#3956)

Redis stores its loaded drivers in `Redis::Connection.drivers` and uses the
last one of them when initializing a new client. Sidekiq always uses `'ruby'`
(or `Redis::Connection::Ruby`) per default, though.

With this commit we are following redis' default by passing the last
loaded driver per default (or a given `:driver`).
This commit is contained in:
Tobias Bühlmann 2018-09-09 15:11:37 +02:00 committed by Mike Perham
parent 78344b6710
commit da3fbed14b
2 changed files with 32 additions and 1 deletions

View file

@ -78,7 +78,7 @@ module Sidekiq
opts.delete(:network_timeout)
end
opts[:driver] ||= 'ruby'
opts[:driver] ||= Redis::Connection.drivers.last || 'ruby'
# Issue #3303, redis-rb will silently retry an operation.
# This can lead to duplicate jobs if Sidekiq::Client's LPUSH

View file

@ -144,6 +144,37 @@ class TestRedisConnection < Sidekiq::Test
assert_equal 1, pool.instance_eval{ @timeout }
end
end
describe "driver" do
it "uses redis' ruby driver" do
pool = Sidekiq::RedisConnection.create
redis = pool.checkout
assert_equal Redis::Connection::Ruby, redis.instance_variable_get(:@client).driver
end
it "uses redis' default driver if there are many available" do
begin
redis_driver = Object.new
Redis::Connection.drivers << redis_driver
pool = Sidekiq::RedisConnection.create
redis = pool.checkout
assert_equal redis_driver, redis.instance_variable_get(:@client).driver
ensure
Redis::Connection.drivers.pop
end
end
it "uses a given :driver" do
redis_driver = Object.new
pool = Sidekiq::RedisConnection.create(:driver => redis_driver)
redis = pool.checkout
assert_equal redis_driver, redis.instance_variable_get(:@client).driver
end
end
end
describe ".determine_redis_provider" do