Sha256: c98fa92ce1ac12130f1db75bb259caa17aa21f73935d87f2c8f4f1c7a1e60597
Contents?: true
Size: 804 Bytes
Versions: 1
Compression:
Stored size: 804 Bytes
Contents
# Experimental LOCK support ported form http://github.com/fauna/interlock/tree/master/lib/interlock/lock.rb module ActiveSupport module Cache class MemCacheStore < Store def lock(key, lock_expiry = 30, retries = 5) retries.times do |count| begin response = @data.add("lock:#{key}", "Locked by #{Process.pid}", lock_expiry) response ||= Response::STORED rescue Object => e end if response == Response::STORED begin value = yield( @data.get(key) ) @data.set(key, value) return value ensure @data.delete("lock:#{key}") end else sleep((2**count) / 2.0) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ferblape-query_memcached-2.2.2 | lib/extensions/lock.rb |