How To Distinguish Between a Crashed Server and Non-Existent Memcached Key Value?

Andreas Vierengel avierengel at gatrixx.com
Sun Jun 4 09:35:56 UTC 2006


Garrett Rooney wrote:
> On 6/1/06, EKC <webmaster at generalsynthesis.com> wrote:
> 
>> How can I differentiate between a missing KEY->server mapping (when
>> Cache::Memcached::get() returns undef) and a crashed server (which
>> also results in 'undef')?
> 
> If you are using memcached correctly you should not differentiate
> between the two cases.  You should always be able to handle the case
> where memcached does not have a particular value, the exact reason it
> doesn't have it is meaningless, that's core to the way it works.  For
> example, you could also get an undef response simply because the cache
> filled up and dropped that value out of it.  You still need to handle
> that case as well.
> 
> -garrett
> 

that's right, but it could lead to a nice DoS-Attack especially if (for 
example) a web-request leads to a specific key which cannot be filled 
from the original source, because the original source produces 'undef' 
as well.
One solution could be that you never let this happen and always generate 
a "reasonable" value for this key, or you could hack Cache::Memcached to 
  add a undef-state using the flags-field.

--Andy


More information about the memcached mailing list