summaryrefslogtreecommitdiff
path: root/repoze
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 /repoze
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.
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/lru.py6
1 files changed, 5 insertions, 1 deletions
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)