diff --git a/Changes.md b/Changes.md index 28940374..ef0e1841 100644 --- a/Changes.md +++ b/Changes.md @@ -2,6 +2,7 @@ HEAD ----------- - Log Sidekiq Pro's Batch ID if available [#2076] +- Refactor Processor Redis usage to avoid redis/redis-rb#490 [#] 3.3.0 diff --git a/lib/sidekiq/processor.rb b/lib/sidekiq/processor.rb index 70439178..1274369e 100644 --- a/lib/sidekiq/processor.rb +++ b/lib/sidekiq/processor.rb @@ -98,26 +98,26 @@ module Sidekiq yield rescue Exception retry_and_suppress_exceptions do + failed = "stat:failed:#{Time.now.utc.to_date}" Sidekiq.redis do |conn| - failed = "stat:failed:#{Time.now.utc.to_date}" - result = conn.multi do + conn.multi do conn.incrby("stat:failed", 1) conn.incrby(failed, 1) + conn.expire(failed, STATS_TIMEOUT) end - conn.expire(failed, STATS_TIMEOUT) if result.last == 1 end end raise ensure retry_and_suppress_exceptions do + processed = "stat:processed:#{Time.now.utc.to_date}" Sidekiq.redis do |conn| - processed = "stat:processed:#{Time.now.utc.to_date}" - result = conn.multi do + conn.multi do conn.hdel("#{identity}:workers", thread_identity) conn.incrby("stat:processed", 1) conn.incrby(processed, 1) + conn.expire(processed, STATS_TIMEOUT) end - conn.expire(processed, STATS_TIMEOUT) if result.last == 1 end end end