From: Raymond Hettinger Date: Mon, 30 Apr 2012 21:14:28 +0000 (-0700) Subject: Handle a possible race condition X-Git-Tag: v3.3.0a3~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=34d94a21018e8172f4e57a96fb537427f9dbb251;p=thirdparty%2FPython%2Fcpython.git Handle a possible race condition --- diff --git a/Lib/functools.py b/Lib/functools.py index e4458f4920c5..8206c4a2229a 100644 --- a/Lib/functools.py +++ b/Lib/functools.py @@ -241,6 +241,12 @@ def lru_cache(maxsize=100, typed=False): return result result = user_function(*args, **kwds) with lock: + if key in cache: + # getting here means that this same key was added to the + # cache while the lock was released. since the link + # update is already done, we need only return the + # computed result and update the count of misses. + pass if currsize < maxsize: # put result in a new link at the front of the queue last = root[PREV]