Sha256: 49d1d7e61e33083d8a5af39130c8ea4040dc76c469534797a74277ea2637f3dd

Contents?: true

Size: 665 Bytes

Versions: 51

Compression:

Stored size: 665 Bytes

Contents

# frozen_string_literal: true

module Cloudtasker
  module UniqueJob
    module Lock
      # Conflict if any other job with the same args is scheduled
      # while the first job is pending.
      class UntilExecuting < BaseLock
        #
        # Acquire a lock for the job and trigger a conflict
        # if the lock could not be acquired.
        #
        def schedule
          job.lock!
          yield
        rescue LockError
          conflict_instance.on_schedule { yield }
        end

        #
        # Release the lock and perform the job.
        #
        def execute
          job.unlock!
          yield
        end
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
cloudtasker-0.13.2 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.13.1 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.13.0 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.13.rc2 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.13.rc1 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.2 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.1 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.11.1 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.10.2 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.9.5 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.0 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc11 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc10 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc9 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc8 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc7 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc6 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc5 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc4 lib/cloudtasker/unique_job/lock/until_executing.rb
cloudtasker-0.12.rc3 lib/cloudtasker/unique_job/lock/until_executing.rb