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, #enqueued_at, #jid, #klass, #latency, #queue

Constructor Details

#initialize(parent, score, item) ⇒ SortedEntry

Returns a new instance of SortedEntry.



237
238
239
240
241
# File 'lib/sidekiq/api.rb', line 237

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

Instance Attribute Details

#parentObject (readonly)

Returns the value of attribute parent.



235
236
237
# File 'lib/sidekiq/api.rb', line 235

def parent
  @parent
end

#scoreObject (readonly)

Returns the value of attribute score.



234
235
236
# File 'lib/sidekiq/api.rb', line 234

def score
  @score
end

Instance Method Details

#add_to_queueObject



256
257
258
259
260
261
262
263
264
265
266
267
# File 'lib/sidekiq/api.rb', line 256

def add_to_queue
  Sidekiq.redis do |conn|
    results = conn.multi do
      conn.zrangebyscore('schedule', score, score)
      conn.zremrangebyscore('schedule', score, score)
    end.first
    results.map do |message|
      msg = Sidekiq.load_json(message)
      Sidekiq::Client.push(msg)
    end
  end
end

#atObject



243
244
245
# File 'lib/sidekiq/api.rb', line 243

def at
  Time.at(score).utc
end

#deleteObject



247
248
249
# File 'lib/sidekiq/api.rb', line 247

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

#reschedule(at) ⇒ Object



251
252
253
254
# File 'lib/sidekiq/api.rb', line 251

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

#retryObject



269
270
271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/sidekiq/api.rb', line 269

def retry
  raise "Retry not available on jobs which have not failed" unless item["failed_at"]
  Sidekiq.redis do |conn|
    results = conn.multi do
      conn.zrangebyscore(parent.name, score, score)
      conn.zremrangebyscore(parent.name, score, score)
    end.first
    results.map do |message|
      msg = Sidekiq.load_json(message)
      msg['retry_count'] = msg['retry_count'] - 1
      Sidekiq::Client.push(msg)
    end
  end
end