Class: Wurk::Scheduled::ReliableEnq
- Inherits:
-
Object
- Object
- Wurk::Scheduled::ReliableEnq
- Includes:
- Component
- Defined in:
- lib/wurk/scheduled.rb
Overview
Reliable variant of Enq (Pro §4). The default Enq pops then pushes —
a crash between the ZPOPBYSCORE and the client push loses the job.
ReliableEnq instead promotes every due job from each set onto its target
queue in a single atomic Lua (ZRANGEBYSCORE → LPUSH queue: → ZREM),
so there is no window where a job exists in neither place. Swapped in by
config.reliable_scheduler! via the scheduled_enq seam.
Spec: docs/target/sidekiq-pro.md §4.
Constant Summary
Constants included from Component
Component::DEFAULT_THREAD_PRIORITY, Component::PROCESS_NONCE
Instance Attribute Summary
Attributes included from Component
Instance Method Summary collapse
- #enqueue_jobs(sorted_sets = SETS) ⇒ Object
-
#initialize(container) ⇒ ReliableEnq
constructor
A new instance of ReliableEnq.
- #terminate ⇒ Object
Methods included from Component
#default_tag, #fire_event, #handle_exception, #hostname, #identity, #leader?, #logger, #mono_ms, #process_nonce, #real_ms, #redis, #safe_thread, #tid, #watchdog
Constructor Details
#initialize(container) ⇒ ReliableEnq
Returns a new instance of ReliableEnq.
81 82 83 84 |
# File 'lib/wurk/scheduled.rb', line 81 def initialize(container) @config = container @done = false end |
Instance Method Details
#enqueue_jobs(sorted_sets = SETS) ⇒ Object
86 87 88 89 90 |
# File 'lib/wurk/scheduled.rb', line 86 def enqueue_jobs(sorted_sets = SETS) @config.redis do |conn| sorted_sets.each { |sset| promote(conn, sset) } end end |
#terminate ⇒ Object
92 93 94 |
# File 'lib/wurk/scheduled.rb', line 92 def terminate @done = true end |