class Sidekiq::SortedEntry
Attributes
parent[R]
score[R]
Public Class Methods
new(parent, score, item)
click to toggle source
Calls superclass method
Sidekiq::Job.new
# File lib/sidekiq/api.rb, line 442 def initialize(parent, score, item) super(item) @score = score @parent = parent end
Public Instance Methods
add_to_queue()
click to toggle source
# File lib/sidekiq/api.rb, line 465 def add_to_queue remove_job do |message| msg = Sidekiq.load_json(message) Sidekiq::Client.push(msg) end end
at()
click to toggle source
# File lib/sidekiq/api.rb, line 448 def at Time.at(score).utc end
delete()
click to toggle source
# File lib/sidekiq/api.rb, line 452 def delete if @value @parent.delete_by_value(@parent.name, @value) else @parent.delete_by_jid(score, jid) end end
error?()
click to toggle source
# File lib/sidekiq/api.rb, line 488 def error? !!item['error_class'] end
kill()
click to toggle source
Place job in the dead set
# File lib/sidekiq/api.rb, line 482 def kill remove_job do |message| DeadSet.new.kill(message) end end
reschedule(at)
click to toggle source
# File lib/sidekiq/api.rb, line 460 def reschedule(at) delete @parent.schedule(at, item) end
retry()
click to toggle source
# File lib/sidekiq/api.rb, line 472 def retry remove_job do |message| msg = Sidekiq.load_json(message) msg['retry_count'] -= 1 if msg['retry_count'] Sidekiq::Client.push(msg) end end
Private Instance Methods
remove_job() { |first| ... }
click to toggle source
# File lib/sidekiq/api.rb, line 494 def remove_job Sidekiq.redis do |conn| results = conn.multi do conn.zrangebyscore(parent.name, score, score) conn.zremrangebyscore(parent.name, score, score) end.first if results.size == 1 yield results.first else # multiple jobs with the same score # find the one with the right JID and push it hash = results.group_by do |message| if message.index(jid) msg = Sidekiq.load_json(message) msg['jid'] == jid else false end end msg = hash.fetch(true, []).first yield msg if msg # push the rest back onto the sorted set conn.multi do hash.fetch(false, []).each do |message| conn.zadd(parent.name, score.to_f.to_s, message) end end end end end