lib/idempo/redis_backend.rb in idempo-0.1.1 vs lib/idempo/redis_backend.rb in idempo-0.1.2
- old
+ new
@@ -10,11 +10,11 @@
-- we are still holding the lock, release it
redis.call("del",KEYS[1])
return "ok"
else
-- someone else holds the lock or it has expired
- return "lock_lost"
+ return "stale"
end
EOL
# See https://redis.io/topics/distlock as well as a rebuttal in
# https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html
@@ -23,11 +23,11 @@
if redis.call("get", KEYS[1]) == ARGV[1] then
-- we are still holding the lock, we can go ahead and set it
redis.call("set", KEYS[2], ARGV[2], "px", ARGV[3])
return "ok"
else
- return "lock_lost"
+ return "stale"
end
EOL
class Store < Struct.new(:redis_pool, :key, :lock_redis_key, :lock_token, keyword_init: true)
def lookup
@@ -52,11 +52,11 @@
argv = [lock_token, data.force_encoding(Encoding::BINARY), ttl_millis]
outcome_of_save = redis_pool.with do |r|
Idempo::RedisBackend.eval_or_evalsha(r, SET_WITH_TTL_IF_LOCK_STILL_HELD_SCRIPT, keys: keys, argv: argv)
end
- Measurometer.increment_counter('idempo.redis_lock_when_storing', 1, outcome: outcome_of_save)
+ Measurometer.increment_counter('idempo.redis_lock_state_when_saving_response', 1, state: outcome_of_save)
end
end
class NullPool < Struct.new(:redis)
def with
@@ -82,10 +82,10 @@
yield(store)
ensure
outcome_of_del = @redis_pool.with do |r|
Idempo::RedisBackend.eval_or_evalsha(r, DELETE_BY_KEY_AND_VALUE_SCRIPT, keys: [lock_key], argv: [token])
end
- Measurometer.increment_counter('idempo_redis_release_lock', 1, outcome: outcome_of_del)
+ Measurometer.increment_counter('idempo.redis_lock_state_when_releasing_lock', 1, state: outcome_of_del)
end
end
def self.eval_or_evalsha(redis, script_code, keys:, argv:)
script_sha = Digest::SHA1.hexdigest(script_code)