Class: Sidekiq::SortedEntry

Inherits:
Job
  • Object
show all
Defined in:
lib/sidekiq/api.rb

Instance Attribute Summary collapse

Attributes inherited from Job

#item

Instance Method Summary collapse

Methods inherited from Job

#[], #args, #created_at, #display_args, #display_class, #enqueued_at, #jid, #klass, #latency, #queue

Constructor Details

#initialize(parent, score, item) ⇒ SortedEntry

Returns a new instance of SortedEntry.



361
362
363
364
365
# File 'lib/sidekiq/api.rb', line 361

def initialize(parent, score, item)
  super(item)
  @score = score
  @parent = parent
end

Instance Attribute Details

#parentObject (readonly)

Returns the value of attribute parent.



359
360
361
# File 'lib/sidekiq/api.rb', line 359

def parent
  @parent
end

#scoreObject (readonly)

Returns the value of attribute score.



358
359
360
# File 'lib/sidekiq/api.rb', line 358

def score
  @score
end

Instance Method Details

#add_to_queueObject



380
381
382
383
384
385
# File 'lib/sidekiq/api.rb', line 380

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

#atObject



367
368
369
# File 'lib/sidekiq/api.rb', line 367

def at
  Time.at(score).utc
end

#deleteObject



371
372
373
# File 'lib/sidekiq/api.rb', line 371

def delete
  @parent.delete(score, jid)
end

#killObject

Place job in the dead set



398
399
400
401
402
403
404
405
406
407
408
409
410
411
# File 'lib/sidekiq/api.rb', line 398

def kill
  raise 'Kill not available on jobs which have not failed' unless item['failed_at']
  remove_job do |message|
    Sidekiq.logger.info { "Killing job #{message['jid']}" }
    now = Time.now.to_f
    Sidekiq.redis do |conn|
      conn.multi do
        conn.zadd('dead', now, message)
        conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout)
        conn.zremrangebyrank('dead', 0, - DeadSet.max_jobs)
      end
    end
  end
end

#reschedule(at) ⇒ Object



375
376
377
378
# File 'lib/sidekiq/api.rb', line 375

def reschedule(at)
  @parent.delete(score, jid)
  @parent.schedule(at, item)
end

#retryObject



387
388
389
390
391
392
393
394
# File 'lib/sidekiq/api.rb', line 387

def retry
  raise "Retry not available on jobs which have not failed" unless item["failed_at"]
  remove_job do |message|
    msg = Sidekiq.load_json(message)
    msg['retry_count'] -= 1
    Sidekiq::Client.push(msg)
  end
end