Sha256: 0f9e38b5294356eac505b7487f436c0338e58953d50c27a192fa228498774259
Contents?: true
Size: 1.47 KB
Versions: 1
Compression:
Stored size: 1.47 KB
Contents
# frozen_string_literal: true # @api private # @since 1.0.0 module RedisQueuedLocks::Acquier::ClearDeadRequests class << self # @param redis_client [RedisClient] # @param scan_size [Integer] # @param dead_ttl [Integer] In milliseconds # @param logger [::Logger,#debug] # @param instrumenter [#notify] # @param instrument [NilClass,Any] # @return [Hash<Symbol,Boolean|Hash<Symbol,Set<String>>>] # # @api private # @since 1.0.0 def clear_dead_requests(redis_client, scan_size, dead_ttl, logger, instrumenter, instrument) dead_score = RedisQueuedLocks::Resource.acquier_dead_score(dead_ttl / 1000.0) result = Set.new.tap do |processed_queues| redis_client.with do |rconn| each_lock_queue(rconn, scan_size) do |lock_queue| rconn.call('ZREMRANGEBYSCORE', lock_queue, '-inf', dead_score) processed_queues << lock_queue end end end RedisQueuedLocks::Data[ok: true, result: { processed_queues: result }] end private # @param redis_client [RedisClient] # @param scan_size [Integer] # @yield [lock_queue] # @yieldparam lock_queue [String] # @yieldreturn [void] # @return [Enumerator] # # @api private # @since 1.0.0 def each_lock_queue(redis_client, scan_size, &block) redis_client.scan( 'MATCH', RedisQueuedLocks::Resource::LOCK_QUEUE_PATTERN, count: scan_size, &block ) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
redis_queued_locks-1.2.0 | lib/redis_queued_locks/acquier/clear_dead_requests.rb |