Re: [Python-checkins] cpython: Handle a possible race condition

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: [Python-checkins] cpython: Handle a possible race condition

Nick Coghlan
On Tue, May 1, 2012 at 10:35 AM, raymond.hettinger
<[hidden email]> wrote:

> http://hg.python.org/cpython/rev/b3aeaef6c315
> changeset:   76675:b3aeaef6c315
> user:        Raymond Hettinger <[hidden email]>
> date:        Mon Apr 30 14:14:28 2012 -0700
> summary:
>  Handle a possible race condition
>
> files:
>  Lib/functools.py |  6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
>
> diff --git a/Lib/functools.py b/Lib/functools.py
> --- a/Lib/functools.py
> +++ b/Lib/functools.py
> @@ -241,6 +241,12 @@
>                         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]

To get the desired effect, I believe you also need s/if currsize/elif currsize/

Cheers,
Nick.


--
Nick Coghlan   |   [hidden email]   |   Brisbane, Australia
_______________________________________________
Python-Dev mailing list
[hidden email]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/lists%2B1324100855712-1801473%40n6.nabble.com