From 5b2abc88594d5b80e84ad62d1668618ea1d43d9f Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 16 Feb 2009 15:16:10 +0000 Subject: - 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. --- repoze/bfg/lru.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'repoze') 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) -- cgit v1.2.3