diff --git a/CHANGELOG.md b/CHANGELOG.md index 8906f93..a45ee67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ Changelog --------- +### 0.3.2 November 12, 2025 +- Fix deprecated `redis.exists` to use `redis.exists?` +- Fix deprecated calling commands on `Redis` inside `Redis #multi`. +- Fix deprecated positional timeout on `redis.blpop` + ### 0.3.1 April 17, 2016 - Fix `sem.lock(0)` bug (thanks eugenk!). diff --git a/lib/redis/semaphore.rb b/lib/redis/semaphore.rb index 461fa72..5be3765 100644 --- a/lib/redis/semaphore.rb +++ b/lib/redis/semaphore.rb @@ -62,7 +62,7 @@ def lock(timeout = nil) if timeout.nil? || timeout > 0 # passing timeout 0 to blpop causes it to block - _key, current_token = @redis.blpop(available_key, timeout || 0) + _key, current_token = @redis.blpop(available_key, timeout: (timeout || 0)) else current_token = @redis.lpop(available_key) end @@ -105,22 +105,22 @@ def locked?(token = nil) def signal(token = 1) token ||= generate_unique_token - @redis.multi do - @redis.hdel grabbed_key, token - @redis.lpush available_key, token + @redis.multi do |transaction| + transaction.hdel grabbed_key, token + transaction.lpush available_key, token - set_expiration_if_necessary + set_expiration_if_necessary(transaction) end end def exists? - @redis.exists(exists_key) + @redis.exists?(exists_key) end def all_tokens - @redis.multi do - @redis.lrange(available_key, 0, -1) - @redis.hkeys(grabbed_key) + @redis.multi do |transaction| + transaction.lrange(available_key, 0, -1) + transaction.hkeys(grabbed_key) end.flatten end @@ -184,23 +184,24 @@ def simple_expiring_mutex(key_name, expires_in) def create! @redis.expire(exists_key, 10) - @redis.multi do - @redis.del(grabbed_key) - @redis.del(available_key) + @redis.multi do |transaction| + transaction.del(grabbed_key) + transaction.del(available_key) @resource_count.times do |index| - @redis.rpush(available_key, index) + transaction.rpush(available_key, index) end - @redis.set(version_key, API_VERSION) - @redis.persist(exists_key) + transaction.set(version_key, API_VERSION) + transaction.persist(exists_key) - set_expiration_if_necessary + set_expiration_if_necessary(transaction) end end - def set_expiration_if_necessary + def set_expiration_if_necessary(transaction = nil) + redis = transaction || @redis if @expiration [available_key, exists_key, version_key].each do |key| - @redis.expire(key, @expiration) + redis.expire(key, @expiration) end end end diff --git a/redis-semaphore.gemspec b/redis-semaphore.gemspec index 4c7d2ce..08f62e6 100644 --- a/redis-semaphore.gemspec +++ b/redis-semaphore.gemspec @@ -1,6 +1,6 @@ Gem::Specification.new do |s| s.name = 'redis-semaphore' - s.version = '0.3.1' + s.version = '0.3.2' s.summary = 'Implements a distributed semaphore or mutex using Redis.' s.authors = ['David Verhasselt'] s.email = 'david@crowdway.com'