lib/sidekiq/limit_fetch/local/selector.rb in sidekiq-limit_fetch-1.1 vs lib/sidekiq/limit_fetch/local/selector.rb in sidekiq-limit_fetch-1.2
- old
+ new
@@ -1,13 +1,20 @@
module Sidekiq::LimitFetch::Local
module Selector
extend self
def acquire(names)
- blocked = false
+ blocked = false
+ unblocked = []
+
queues(names).select {|queue|
- next false if blocked
- blocked = true if not queue.paused? and queue.blocking? and queue.busy > 0
+ next false if blocked and not unblocked.include?(queue.name)
+
+ if not queue.paused? and queue.blocking? and queue.busy > 0
+ blocked = true
+ unblocked = queue.unblocked || []
+ end
+
queue.acquire
}.map(&:name)
end
def release(names)