Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #10646: `cache.incr()` and `decr()` now fail consistantly under…

… python-memcache and cmemcache.

Though it looks like this commit has no tests that's not so: this is tested for in `regressiontests/cache/tests.py` around like 183; these tests currently fail if ran against cmemcache.

Thanks, andrewfong.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@11855 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 07ba0dbaf75a72c3c3ab71ca5a80f0889ddabb72 1 parent 1c5fe46
Jacob Kaplan-Moss jacobian authored
Showing with 23 additions and 2 deletions.
  1. +23 −2 django/core/cache/backends/memcached.py
25 django/core/cache/backends/memcached.py
View
@@ -46,7 +46,28 @@ def close(self, **kwargs):
self._cache.disconnect_all()
def incr(self, key, delta=1):
- return self._cache.incr(key, delta)
+ try:
+ val = self._cache.incr(key, delta)
+
+ # python-memcache responds to incr on non-existent keys by
+ # raising a ValueError. Cmemcache returns None. In both
+ # cases, we should raise a ValueError though.
+ except ValueError:
+ val = None
+ if val is None:
+ raise ValueError("Key '%s' not found" % key)
+
+ return val
def decr(self, key, delta=1):
- return self._cache.decr(key, delta)
+ try:
+ val = self._cache.decr(key, delta)
+
+ # python-memcache responds to decr on non-existent keys by
+ # raising a ValueError. Cmemcache returns None. In both
+ # cases, we should raise a ValueError though.
+ except ValueError:
+ val = None
+ if val is None:
+ raise ValueError("Key '%s' not found" % key)
+ return val
Please sign in to comment.
Something went wrong with that request. Please try again.