Skip to content

Commit

Permalink
Redis-rb 4.8.0 compatibility, fixes #5484
Browse files Browse the repository at this point in the history
  • Loading branch information
mperham committed Aug 22, 2022
1 parent 2f1fd1e commit 09dacfe
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 30 deletions.
1 change: 1 addition & 0 deletions Gemfile
Expand Up @@ -3,6 +3,7 @@ source "https://rubygems.org"
gemspec

gem "rake"
gem "redis"
gem "redis-namespace"
gem "redis-client"
gem "rails", "~> 6.0"
Expand Down
2 changes: 1 addition & 1 deletion lib/sidekiq/api.rb
Expand Up @@ -316,7 +316,7 @@ def clear
Sidekiq.redis do |conn|
conn.multi do |transaction|
transaction.unlink(@rname)
transaction.srem("queues", name)
transaction.srem("queues", [name])
end
end
true
Expand Down
2 changes: 1 addition & 1 deletion lib/sidekiq/client.rb
Expand Up @@ -231,7 +231,7 @@ def atomic_push(conn, payloads)
entry["enqueued_at"] = now
Sidekiq.dump_json(entry)
}
conn.sadd("queues", queue)
conn.sadd("queues", [queue])
conn.lpush("queue:#{queue}", to_push)
end
end
Expand Down
4 changes: 2 additions & 2 deletions lib/sidekiq/fetch.rb
Expand Up @@ -33,7 +33,7 @@ def initialize(config)
@queues = @config[:queues].map { |q| "queue:#{q}" }
if @strictly_ordered_queues
@queues.uniq!
@queues << TIMEOUT
@queues << {timeout: TIMEOUT}
end
end

Expand Down Expand Up @@ -83,7 +83,7 @@ def queues_cmd
else
permute = @queues.shuffle
permute.uniq!
permute << TIMEOUT
permute << {timeout: TIMEOUT}
permute
end
end
Expand Down
4 changes: 2 additions & 2 deletions lib/sidekiq/launcher.rb
Expand Up @@ -86,7 +86,7 @@ def clear_heartbeat
# doesn't actually exit, it'll reappear in the Web UI.
redis do |conn|
conn.pipelined do |pipeline|
pipeline.srem("processes", identity)
pipeline.srem("processes", [identity])
pipeline.unlink("#{identity}:work")
end
end
Expand Down Expand Up @@ -165,7 +165,7 @@ def ❤

_, exists, _, _, msg = redis { |conn|
conn.multi { |transaction|
transaction.sadd("processes", key)
transaction.sadd("processes", [key])
transaction.exists?(key)
transaction.hmset(key, "info", to_json,
"busy", curstate.size,
Expand Down
26 changes: 12 additions & 14 deletions test/test_api.rb
Expand Up @@ -76,8 +76,7 @@
describe "workers_size" do
it "retrieves the number of busy workers" do
Sidekiq.redis do |c|
c.sadd("processes", "process_1")
c.sadd("processes", "process_2")
c.sadd("processes", ["process_1", "process_2"])
c.hset("process_1", "busy", 1)
c.hset("process_2", "busy", 2)
end
Expand All @@ -95,10 +94,10 @@
it "returns a hash of queue and size in order" do
Sidekiq.redis do |conn|
conn.rpush "queue:foo", "{}"
conn.sadd "queues", "foo"
conn.sadd "queues", ["foo"]

3.times { conn.rpush "queue:bar", "{}" }
conn.sadd "queues", "bar"
conn.sadd "queues", ["bar"]
end

s = Sidekiq::Stats::Queues.new
Expand All @@ -113,7 +112,7 @@
it "handles latency for good jobs" do
Sidekiq.redis do |conn|
conn.rpush "queue:default", "{\"enqueued_at\": #{Time.now.to_f}}"
conn.sadd "queues", "default"
conn.sadd "queues", ["default"]
end
s = Sidekiq::Stats.new
assert s.default_queue_latency > 0
Expand All @@ -124,7 +123,7 @@
it "handles latency for incomplete jobs" do
Sidekiq.redis do |conn|
conn.rpush "queue:default", "{}"
conn.sadd "queues", "default"
conn.sadd "queues", ["default"]
end
s = Sidekiq::Stats.new
assert_equal 0, s.default_queue_latency
Expand All @@ -135,10 +134,10 @@
it "returns total enqueued jobs" do
Sidekiq.redis do |conn|
conn.rpush "queue:foo", "{}"
conn.sadd "queues", "foo"
conn.sadd "queues", ["foo"]

3.times { conn.rpush "queue:bar", "{}" }
conn.sadd "queues", "bar"
conn.sadd "queues", ["bar"]
end

s = Sidekiq::Stats.new
Expand Down Expand Up @@ -570,9 +569,9 @@ class WorkerWithTags
time = Time.now.to_f
Sidekiq.redis do |conn|
conn.multi do |transaction|
transaction.sadd("processes", odata["key"])
transaction.sadd("processes", [odata["key"]])
transaction.hmset(odata["key"], "info", Sidekiq.dump_json(odata), "busy", 10, "beat", time)
transaction.sadd("processes", "fake:pid")
transaction.sadd("processes", ["fake:pid"])
end
end

Expand Down Expand Up @@ -601,7 +600,7 @@ class WorkerWithTags
key = "#{hn}:#{$$}"
pdata = {"pid" => $$, "hostname" => hn, "started_at" => Time.now.to_i}
Sidekiq.redis do |conn|
conn.sadd("processes", key)
conn.sadd("processes", [key])
conn.hmset(key, "info", Sidekiq.dump_json(pdata), "busy", 0, "beat", Time.now.to_f)
end

Expand Down Expand Up @@ -653,7 +652,7 @@ class WorkerWithTags
data = {"pid" => rand(10_000), "hostname" => "app#{rand(1_000)}", "started_at" => Time.now.to_f}
key = "#{data["hostname"]}:#{data["pid"]}"
Sidekiq.redis do |conn|
conn.sadd("processes", key)
conn.sadd("processes", [key])
conn.hmset(key, "info", Sidekiq.dump_json(data), "busy", 0, "beat", Time.now.to_f)
end

Expand All @@ -662,8 +661,7 @@ class WorkerWithTags
assert_equal 1, ps.to_a.size

Sidekiq.redis do |conn|
conn.sadd("processes", "bar:987")
conn.sadd("processes", "bar:986")
conn.sadd("processes", ["bar:987", "bar:986"])
conn.del("process_cleanup")
end

Expand Down
2 changes: 1 addition & 1 deletion test/test_fetch.rb
Expand Up @@ -35,7 +35,7 @@ def fetcher(options)
it "retrieves with strict setting" do
fetch = fetcher(queues: ["basic", "bar", "bar"], strict: true)
cmd = fetch.queues_cmd
assert_equal cmd, ["queue:basic", "queue:bar", Sidekiq::BasicFetch::TIMEOUT]
assert_equal cmd, ["queue:basic", "queue:bar", {timeout: Sidekiq::BasicFetch::TIMEOUT}]
end

it "bulk requeues" do
Expand Down
2 changes: 1 addition & 1 deletion test/test_scheduled.rb
Expand Up @@ -129,7 +129,7 @@ def with_sidekiq_option(name, value)
with_sidekiq_option(:average_scheduled_poll_interval, 10) do
3.times do |i|
Sidekiq.redis do |conn|
conn.sadd("processes", "process-#{i}")
conn.sadd("processes", ["process-#{i}"])
conn.hset("process-#{i}", "info", "")
end
end
Expand Down
13 changes: 6 additions & 7 deletions test/test_web.rb
Expand Up @@ -62,7 +62,7 @@ def perform(a, b)
it "can display workers" do
Sidekiq.redis do |conn|
conn.incr("busy")
conn.sadd("processes", "foo:1234")
conn.sadd("processes", ["foo:1234"])
conn.hmset("foo:1234", "info", Sidekiq.dump_json("hostname" => "foo", "started_at" => Time.now.to_f, "queues" => [], "concurrency" => 10), "at", Time.now.to_f, "busy", 4)
identity = "foo:1234:work"
hash = {queue: "critical", payload: {"class" => WebWorker.name, "args" => [1, "abc"]}, run_at: Time.now.to_i}
Expand Down Expand Up @@ -152,7 +152,7 @@ def perform(a, b)
it "can delete a queue" do
Sidekiq.redis do |conn|
conn.rpush("queue:foo", "{\"args\":[],\"enqueued_at\":1567894960}")
conn.sadd("queues", "foo")
conn.sadd("queues", ["foo"])
end

get "/queues/foo"
Expand Down Expand Up @@ -442,7 +442,7 @@ def perform(a, b)
# on /workers page
Sidekiq.redis do |conn|
pro = "foo:1234"
conn.sadd("processes", pro)
conn.sadd("processes", [pro])
conn.hmset(pro, "info", Sidekiq.dump_json("started_at" => Time.now.to_f, "labels" => ["frumduz"], "queues" => [], "concurrency" => 10), "busy", 1, "beat", Time.now.to_f)
identity = "#{pro}:work"
hash = {queue: "critical", payload: {"class" => "FailWorker", "args" => ["<a>hello</a>"]}, run_at: Time.now.to_i}
Expand Down Expand Up @@ -517,7 +517,7 @@ def perform(a, b)
Sidekiq.redis do |conn|
conn.set("stat:processed", 5)
conn.set("stat:failed", 2)
conn.sadd("queues", "default")
conn.sadd("queues", ["default"])
end
2.times { add_retry }
3.times { add_scheduled }
Expand Down Expand Up @@ -570,8 +570,7 @@ def perform(a, b)
Sidekiq.redis do |conn|
conn.set("stat:processed", 5)
conn.set("stat:failed", 2)
conn.sadd("queues", "default")
conn.sadd("queues", "queue2")
conn.sadd("queues", ["default", "queue2"])
end
2.times { add_retry }
3.times { add_scheduled }
Expand Down Expand Up @@ -714,7 +713,7 @@ def add_worker
msg = "{\"queue\":\"default\",\"payload\":{\"retry\":true,\"queue\":\"default\",\"timeout\":20,\"backtrace\":5,\"class\":\"HardWorker\",\"args\":[\"bob\",10,5],\"jid\":\"2b5ad2b016f5e063a1c62872\"},\"run_at\":1361208995}"
Sidekiq.redis do |conn|
conn.multi do |transaction|
transaction.sadd("processes", key)
transaction.sadd("processes", [key])
transaction.hmset(key, "info", Sidekiq.dump_json("hostname" => "foo", "started_at" => Time.now.to_f, "queues" => []), "at", Time.now.to_f, "busy", 4)
transaction.hmset("#{key}:work", Time.now.to_f, msg)
end
Expand Down
2 changes: 1 addition & 1 deletion test/test_web_helpers.rb
Expand Up @@ -136,7 +136,7 @@ def params
key = "#{hostname}:123"

Sidekiq.redis do |conn|
conn.sadd("processes", key)
conn.sadd("processes", [key])
conn.hmset(key, "info", Sidekiq.dump_json(pdata), "busy", 0, "beat", Time.now.to_f)
end
end
Expand Down

0 comments on commit 09dacfe

Please sign in to comment.