From b9c2982638dd72f4bf7e242083ae7d61eedd1166 Mon Sep 17 00:00:00 2001 From: Jonathan Hyman Date: Wed, 4 Feb 2015 15:33:49 -0500 Subject: [PATCH] Allows configuration of the Dead Job Queue. --- Changes.md | 4 ++++ lib/sidekiq.rb | 4 +++- lib/sidekiq/api.rb | 15 ++++++++++----- lib/sidekiq/middleware/server/retry_jobs.rb | 4 ++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Changes.md b/Changes.md index 867b59670..843ab746f 100644 --- a/Changes.md +++ b/Changes.md @@ -1,3 +1,7 @@ +3.3.2 (unreleased) +----------- +- Allows configuration of dead job set size and timeout + 3.3.1 ----------- diff --git a/lib/sidekiq.rb b/lib/sidekiq.rb index 4685029e1..13de504cc 100644 --- a/lib/sidekiq.rb +++ b/lib/sidekiq.rb @@ -25,7 +25,9 @@ module Sidekiq startup: [], quiet: [], shutdown: [], - } + }, + dead_max_jobs: 10_000, + dead_timeout_in_seconds: 180 * 24 * 60 * 60 # 6 months } def self.❨╯°□°❩╯︵┻━┻ diff --git a/lib/sidekiq/api.rb b/lib/sidekiq/api.rb index 61e54931f..1348037a7 100644 --- a/lib/sidekiq/api.rb +++ b/lib/sidekiq/api.rb @@ -399,8 +399,8 @@ def kill Sidekiq.redis do |conn| conn.multi do conn.zadd('dead', now, message) - conn.zremrangebyscore('dead', '-inf', now - DeadSet::TIMEOUT) - conn.zremrangebyrank('dead', 0, - DeadSet::MAX_JOBS) + conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout) + conn.zremrangebyrank('dead', 0, - DeadSet.max_jobs) end end end @@ -593,9 +593,6 @@ def retry_all # Allows enumeration of dead jobs within Sidekiq. # class DeadSet < JobSet - TIMEOUT = 180 * 24 * 60 * 60 # 6 months - MAX_JOBS = 10_000 - def initialize super 'dead' end @@ -605,6 +602,14 @@ def retry_all each(&:retry) end end + + def self.max_jobs + Sidekiq.options[:dead_max_jobs] + end + + def self.timeout + Sidekiq.options[:dead_timeout_in_seconds] + end end ## diff --git a/lib/sidekiq/middleware/server/retry_jobs.rb b/lib/sidekiq/middleware/server/retry_jobs.rb index d30964b7e..001289d2f 100644 --- a/lib/sidekiq/middleware/server/retry_jobs.rb +++ b/lib/sidekiq/middleware/server/retry_jobs.rb @@ -156,8 +156,8 @@ def send_to_morgue(msg) Sidekiq.redis do |conn| conn.multi do conn.zadd('dead', now, payload) - conn.zremrangebyscore('dead', '-inf', now - DeadSet::TIMEOUT) - conn.zremrangebyrank('dead', 0, -DeadSet::MAX_JOBS) + conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout) + conn.zremrangebyrank('dead', 0, -DeadSet.max_jobs) end end end