summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-02-16 15:16:10 +0000
committerChris McDonough <chrism@agendaless.com>2009-02-16 15:16:10 +0000
commit5b2abc88594d5b80e84ad62d1668618ea1d43d9f (patch)
treec24c6ae1505820c2176568cd7723488c9bd3c107
parenta3f4048babf761c689efbda31d8eb864316f09e4 (diff)
downloadpyramid-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.txt7
-rw-r--r--repoze/bfg/lru.py6
-rw-r--r--setup.cfg1
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)
diff --git a/setup.cfg b/setup.cfg
index 9a12e4044..db4700e5f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,4 +1,5 @@
[easy_install]
+zip_ok = false
index_url = http://dist.repoze.org/lemonade/dev/simple
[nosetests]