module Sidekiq::Throttled::Fetch::BulkRequeue

Public Instance Methods

bulk_requeue(units, _options) click to toggle source

Requeues all given units as a single operation.

@see www.rubydoc.info/github/redis/redis-rb/master/Redis#pipelined-instance_method @param [Array<Fetch::UnitOfWork>] units @return [void]

# File lib/sidekiq/throttled/fetch.rb, line 21
def bulk_requeue(units, _options)
  return if units.empty?

  Sidekiq.logger.debug { "Re-queueing terminated jobs" }
  Sidekiq.redis { |conn| conn.pipelined { units.each(&:requeue) } }
  Sidekiq.logger.info("Pushed #{units.size} jobs back to Redis")
rescue => e
  Sidekiq.logger.warn("Failed to requeue #{units.size} jobs: #{e}")
end