diff options
| -rw-r--r-- | CHANGES.txt | 7 | ||||
| -rw-r--r-- | repoze/bfg/lru.py | 6 | ||||
| -rw-r--r-- | setup.cfg | 1 |
3 files changed, 13 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index deab41700..a8bf2e500 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -3,6 +3,11 @@ Next Release Bug Fixes --------- +- lru cache was unstable under concurrency (big surprise) when it + tried to redelete a key in the cache that had already been deleted. + Symptom: line 64 in put:del data[oldkey]:KeyError: '/some/path'. + Now we just ignore the key error if we can't delete the key. + - Empty location names in model paths when generating a URL using ``repoze.bfg.model_url`` based on a model obtained via traversal are no longer ignored in the generated URL. This means that if a @@ -21,6 +26,8 @@ Features ``repoze.bfg.traversal.quote_path_segment``, and ``repoze.bfg.url.urlencode``. +- add zip_safe = false to setup.cfg. + Documentation ------------- diff --git a/repoze/bfg/lru.py b/repoze/bfg/lru.py index aec1be402..b757207c8 100644 --- a/repoze/bfg/lru.py +++ b/repoze/bfg/lru.py @@ -61,7 +61,11 @@ class LRUCache(object): try: oldkey = current['key'] if oldkey is not _marker: - del data[oldkey] + try: + del data[oldkey] + except KeyError: + # XXX already deleted; seen in wild 5/16/2009? + pass current['key'] = key current['ref'] = True data[key] = (hand, val) @@ -1,4 +1,5 @@ [easy_install] +zip_ok = false index_url = http://dist.repoze.org/lemonade/dev/simple [nosetests] |
