diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-02-16 15:16:10 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-02-16 15:16:10 +0000 |
| commit | 5b2abc88594d5b80e84ad62d1668618ea1d43d9f (patch) | |
| tree | c24c6ae1505820c2176568cd7723488c9bd3c107 | |
| parent | a3f4048babf761c689efbda31d8eb864316f09e4 (diff) | |
| download | pyramid-5b2abc88594d5b80e84ad62d1668618ea1d43d9f.tar.gz pyramid-5b2abc88594d5b80e84ad62d1668618ea1d43d9f.tar.bz2 pyramid-5b2abc88594d5b80e84ad62d1668618ea1d43d9f.zip | |
- 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.
- add zip_safe = false to setup.cfg.
| -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] |
