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)