From efd87cca2d1dd0d05ff6fc5d94da9a197415693d Mon Sep 17 00:00:00 2001 From: ab5tract Date: Tue, 23 Sep 2008 00:22:52 -0400 Subject: [PATCH] Memcached layer is in play but still not behaving. Must clone and destroy, but the clone claims it doesn't have a method destroy. --- lib/layers/cache/memcached/memcached-ipi.rb | 22 ++++++--------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/lib/layers/cache/memcached/memcached-ipi.rb b/lib/layers/cache/memcached/memcached-ipi.rb index efef5a46..ed34792b 100644 --- a/lib/layers/cache/memcached/memcached-ipi.rb +++ b/lib/layers/cache/memcached/memcached-ipi.rb @@ -12,12 +12,12 @@ def initialize(args) @cache = ::Memcached.new(args[:servers], args[:opt]) end - def add(key,value, ttl = 0, marshal = true) - @cache.add(key.to_s,value,ttl,marshal) + def store(key,value, ttl = 0, marshal = true) + Waves.synchronize { cache = @cache.clone; cache.add(key.to_s,value,ttl,marshal); cache.destroy } end - def get(key) - @cache.get(key.to_s) + def fetch(key) + Waves.synchronize { cache = @cache.clone; cache.get(key.to_s); cache.destroy } rescue ::Memcached::NotFound => e # In order to keep the Memcached layer compliant with Waves::Cache... # ...we need to be able to expect that an absent key raises KeyMissing @@ -25,21 +25,11 @@ def get(key) end def delete(*keys) - keys.each {|key| @cache.delete(key.to_s) } + keys.each {|key| Waves.synchronize { cache = @cache.clone; cache.delete(key.to_s) }; cache.destroy } end def clear - @cache.flush - end - - alias_method :store, :add # Override our natural Waves::Cache :store method with Memcache's :add - alias_method :fetch, :get # Override our natural Waves::Cache :fetch method with Memcache's :get - - def method_missing(*args, &block) - @cached.__send__(*args, &block) - rescue => e - Waves::Logger.error e.to_s - nil + Waves.synchronize { cache = @cache.clone; cache.flush; cache.destroy } end end