class AtomicSidekiq::AtomicOperation::Heartbeat
Constants
- HEARTBEAT_SCRIPT
Public Instance Methods
perform(jid:, timeout:)
click to toggle source
# File lib/atomic_sidekiq/atomic_operation/heartbeat.rb, line 9 def perform(jid:, timeout:) key = in_flight_job_key(jid) return unless key redis do |conn| conn.eval(HEARTBEAT_SCRIPT, [key], [expiration_date(timeout)]) end end
Private Instance Methods
expiration_date(timeout)
click to toggle source
# File lib/atomic_sidekiq/atomic_operation/heartbeat.rb, line 20 def expiration_date(timeout) Time.now.utc.to_i + timeout end
in_flight_job_key(jid)
click to toggle source
# File lib/atomic_sidekiq/atomic_operation/heartbeat.rb, line 24 def in_flight_job_key(jid) matcher = in_flight_keymaker.job_matcher(jid) it = 0 loop do it, keys = redis { |conn| conn.scan(it, match: matcher) } return keys[0] if keys.count > 0 it = it.to_i return if it.zero? end end