class SidekiqUniqueJobs::OnConflict::Replace
@author Mikael Henriksson <mikael@mhenrixon.com>
Strategy to replace the job on conflict
def call(&block)
- Yield: - to retry the lock after deleting the old one
Returns:
-
(void)
-
def call(&block) return unless (deleted_job = delete_job_by_digest) log_info("Deleting job: #{deleted_job}") if (del_count = delete_lock) log_info("Deleted `#{del_count}` keys for #{unique_digest}") end block&.call end
def delete_job_by_digest
-
(nil)
- when deleting nothing -
(String)
- the deleted job hash
def delete_job_by_digest call_script(:delete_job_by_digest, keys: ["#{QUEUE}:#{queue}", SCHEDULE, RETRY], argv: [unique_digest]) end
def delete_lock
-
(Integer)
- the number of keys deleted
def delete_lock digests.delete_by_digest(unique_digest) end
def digests
-
(Digests)
- and instance with digests
def digests @digests ||= SidekiqUniqueJobs::Digests.new end
def initialize(item, redis_pool = nil)
-
item
(Hash
) -- sidekiq job hash
def initialize(item, redis_pool = nil) super(item, redis_pool) @queue = item[QUEUE] @unique_digest = item[LOCK_DIGEST] end