Module: Sidekiq::LimitFetch

Extended by:
LimitFetch
Included in:
LimitFetch
Defined in:
lib/sidekiq/limit_fetch.rb,
lib/sidekiq/limit_fetch/queues.rb,
lib/sidekiq/limit_fetch/instances.rb,
lib/sidekiq/limit_fetch/unit_of_work.rb,
lib/sidekiq/limit_fetch/global/monitor.rb,
lib/sidekiq/limit_fetch/global/selector.rb,
lib/sidekiq/limit_fetch/global/semaphore.rb

Defined Under Namespace

Modules: Global, Instances, Queues Classes: UnitOfWork

Constant Summary collapse

TIMEOUT =
Sidekiq::BasicFetch::TIMEOUT
RedisBaseConnectionError =
RedisClient::ConnectionError
RedisCommandError =
RedisClient::CommandError

Instance Method Summary collapse

Instance Method Details

#bulk_requeue(*args) ⇒ Object



41
42
43
# File 'lib/sidekiq/limit_fetch.rb', line 41

def bulk_requeue(*args)
  Sidekiq::BasicFetch.new(capsule).bulk_requeue(*args)
end

#capsuleObject



37
38
39
# File 'lib/sidekiq/limit_fetch.rb', line 37

def capsule
  Sidekiq.default_configuration.default_capsule
end

#new(_) ⇒ Object



27
28
29
# File 'lib/sidekiq/limit_fetch.rb', line 27

def new(_)
  self
end

#redis_retryableObject



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/sidekiq/limit_fetch.rb', line 45

def redis_retryable
  yield
rescue RedisBaseConnectionError
  sleep TIMEOUT
  retry
rescue RedisCommandError => e
  # If Redis was restarted and is still loading its snapshot,
  # then we should treat this as a temporary connection error too.
  raise unless e.message =~ /^LOADING/

  sleep TIMEOUT
  retry
end

#retrieve_workObject



31
32
33
34
35
# File 'lib/sidekiq/limit_fetch.rb', line 31

def retrieve_work
  queue, job = redis_brpop(Queues.acquire)
  Queues.release_except(queue)
  UnitOfWork.new(queue, job, capsule) if job
end