From f0d2f06ba244e53fee6e12c099f748b88fae0496 Mon Sep 17 00:00:00 2001 From: Jason Ardell Date: Wed, 16 Jan 2013 16:26:26 -0500 Subject: [PATCH] Batch process worker removal for performance. #623 --- lib/sidekiq/manager.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/sidekiq/manager.rb b/lib/sidekiq/manager.rb index f385b12d..7115ef50 100644 --- a/lib/sidekiq/manager.rb +++ b/lib/sidekiq/manager.rb @@ -115,9 +115,10 @@ module Sidekiq Sidekiq.redis do |conn| logger.debug { "Clearing workers in redis" } workers = conn.smembers('workers') - workers.each do |name| - conn.srem('workers', name) if name =~ /:#{process_id}-/ + workers_to_remove = workers.select do |worker_name| + worker_name =~ /:#{process_id}-/ end + conn.srem('workers', workers_to_remove) @busy.each do |processor| # processor is an actor proxy and we can't call any methods