Sha256: f0acf0cf67a45d8098d9e1bfd9999b5e3886f6cdfb231e7655d697908b304d12
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
# frozen_string_literal: true module SidekiqUniqueJobs class Lock # Locks jobs until {#execute} starts # - Locks on perform_in or perform_async # - Unlocks before yielding to the worker's perform method # # @author Mikael Henriksson <mikael@mhenrixon.com> class UntilExecuting < BaseLock # # Locks a sidekiq job # # @note Will call a conflict strategy if lock can't be achieved. # # @return [String, nil] the locked jid when properly locked, else nil. # def lock(&block) unless (token = locksmith.lock) reflect(:lock_failed, item) call_strategy(origin: :client, &block) return end yield if block token end # Executes in the Sidekiq server process # @yield to the worker class perform method def execute callback_safely if locksmith.unlock yield rescue StandardError => ex reflect(:execution_failed, item, ex) locksmith.lock(wait: 1) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-unique-jobs-7.1.22 | lib/sidekiq_unique_jobs/lock/until_executing.rb |