Class: Sidekiq::SortedEntry

Inherits:
JobRecord show all
Defined in:
lib/sidekiq/api.rb

Overview

Represents a job within a Redis sorted set where the score represents a timestamp associated with the job. This timestamp could be the scheduled time for it to run (e.g. scheduled set), or the expiration date after which the entry should be deleted (e.g. dead set).

Instance Attribute Summary collapse

Attributes inherited from JobRecord

#Item, #Queue, #Value, #item, #queue, #value

Instance Method Summary collapse

Methods inherited from JobRecord

#[], #args, #bid, #created_at, #display_args, #display_class, #enqueued_at, #error_backtrace, #failed_at, #jid, #klass, #latency, #retried_at, #tags

Instance Attribute Details

#parentObject (readonly)

Returns the value of attribute parent.



557
558
559
# File 'lib/sidekiq/api.rb', line 557

def parent
  @parent
end

#scoreObject (readonly)

Returns the value of attribute score.



556
557
558
# File 'lib/sidekiq/api.rb', line 556

def score
  @score
end

Instance Method Details

#add_to_queueObject

Enqueue this job from the scheduled or dead set so it will be executed at some point in the near future.



592
593
594
595
596
597
# File 'lib/sidekiq/api.rb', line 592

def add_to_queue
  remove_job do |message|
    msg = Sidekiq.load_json(message)
    Sidekiq::Client.push(msg)
  end
end

#atObject

The timestamp associated with this entry



568
569
570
# File 'lib/sidekiq/api.rb', line 568

def at
  Time.at(score).utc
end

#deleteObject

remove this entry from the sorted set



573
574
575
576
577
578
579
# File 'lib/sidekiq/api.rb', line 573

def delete
  if @value
    @parent.delete_by_value(@parent.name, @value)
  else
    @parent.delete_by_jid(score, jid)
  end
end

#error?Boolean

Returns:

  • (Boolean)


616
617
618
# File 'lib/sidekiq/api.rb', line 616

def error?
  !!item["error_class"]
end

#killObject

Move this job from its current set into the Dead set.



610
611
612
613
614
# File 'lib/sidekiq/api.rb', line 610

def kill
  remove_job do |message|
    DeadSet.new.kill(message)
  end
end

#reschedule(at) ⇒ Object

Change the scheduled time for this job.

Parameters:

  • at (Time)

    the new timestamp for this job



584
585
586
587
588
# File 'lib/sidekiq/api.rb', line 584

def reschedule(at)
  Sidekiq.redis do |conn|
    conn.zincrby(@parent.name, at.to_f - @score, Sidekiq.dump_json(@item))
  end
end

#retryObject

enqueue this job from the retry set so it will be executed at some point in the near future.



601
602
603
604
605
606
607
# File 'lib/sidekiq/api.rb', line 601

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