Kaydet (Commit) ee285609 authored tarafından Malcolm Tredinnick's avatar Malcolm Tredinnick

Fixed #8311 -- Avoid an infinite loop with session key generation when using

the cache backend and memcached goes away (or is not running).


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8620 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst b80db03c
......@@ -17,7 +17,12 @@ class SessionStore(SessionBase):
return {}
def create(self):
while True:
# Because a cache can fail silently (e.g. memcache), we don't know if
# we are failing to create a new session because of a key collision or
# because the cache is missing. So we try for a (large) number of times
# and then raise an exception. That's the risk you shoulder if using
# cache backing.
for i in xrange(10000):
self.session_key = self._get_new_session_key()
try:
self.save(must_create=True)
......@@ -25,6 +30,7 @@ class SessionStore(SessionBase):
continue
self.modified = True
return
raise RuntimeError("Unable to create a new session key.")
def save(self, must_create=False):
if must_create:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment