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

allow sidekiq::client.via to point to same redis

this fixes the incorrect conditional statement if x = Thread.current[:sidekiq_via_pool] && x != pool
which evaluates as if it was written as if x = (Thread.current[:sidekiq_via_pool] && x != pool)
This commit is contained in:
James Lee 2016-03-29 14:14:07 -05:00
parent ab00575915
commit 774c4ae34e
2 changed files with 14 additions and 1 deletions

View file

@ -110,7 +110,8 @@ module Sidekiq
# you cannot scale any other way (e.g. splitting your app into smaller apps). # you cannot scale any other way (e.g. splitting your app into smaller apps).
def self.via(pool) def self.via(pool)
raise ArgumentError, "No pool given" if pool.nil? raise ArgumentError, "No pool given" if pool.nil?
raise RuntimeError, "Sidekiq::Client.via is not re-entrant" if x = Thread.current[:sidekiq_via_pool] && x != pool current_sidekiq_pool = Thread.current[:sidekiq_via_pool]
raise RuntimeError, "Sidekiq::Client.via is not re-entrant" if current_sidekiq_pool && current_sidekiq_pool != pool
Thread.current[:sidekiq_via_pool] = pool Thread.current[:sidekiq_via_pool] = pool
yield yield
ensure ensure

View file

@ -181,6 +181,18 @@ class TestClient < Sidekiq::Test
conn.verify conn.verify
end end
it 'allows #via to point to same Redi' do
conn = MiniTest::Mock.new
conn.expect(:multi, [0, 1])
sharded_pool = ConnectionPool.new(size: 1) { conn }
Sidekiq::Client.via(sharded_pool) do
Sidekiq::Client.via(sharded_pool) do
CWorker.perform_async(1,2,3)
end
end
conn.verify
end
it 'allows #via to point to different Redi' do it 'allows #via to point to different Redi' do
conn = MiniTest::Mock.new conn = MiniTest::Mock.new
conn.expect(:multi, [0, 1]) conn.expect(:multi, [0, 1])