[Checkins] SVN: lovely.responsecache/trunk/ Make the failedHosts
access thread safe
Juergen Kartnaller
juergen at kartnaller.at
Tue Jan 29 10:31:26 EST 2008
Log message for revision 83299:
Make the failedHosts access thread safe
Changed:
U lovely.responsecache/trunk/CHANGES.txt
U lovely.responsecache/trunk/setup.py
U lovely.responsecache/trunk/src/lovely/responsecache/purge.py
-=-
Modified: lovely.responsecache/trunk/CHANGES.txt
===================================================================
--- lovely.responsecache/trunk/CHANGES.txt 2008-01-29 15:07:52 UTC (rev 83298)
+++ lovely.responsecache/trunk/CHANGES.txt 2008-01-29 15:31:25 UTC (rev 83299)
@@ -5,6 +5,7 @@
after
=====
+- make the failedHosts access thread safe
- bugfix: missing parameter on ignorWrite
- added some logging info after successful purges
- removed default values on required fields in purge directive
Modified: lovely.responsecache/trunk/setup.py
===================================================================
--- lovely.responsecache/trunk/setup.py 2008-01-29 15:07:52 UTC (rev 83298)
+++ lovely.responsecache/trunk/setup.py 2008-01-29 15:31:25 UTC (rev 83299)
@@ -23,7 +23,7 @@
setup(
name = 'lovely.responsecache',
- version = '0.4.0',
+ version = '0.4.1',
author = "Lovely Systems",
author_email = "office at lovelysystems.com",
description = "Cache results of ContentProviders",
Modified: lovely.responsecache/trunk/src/lovely/responsecache/purge.py
===================================================================
--- lovely.responsecache/trunk/src/lovely/responsecache/purge.py 2008-01-29 15:07:52 UTC (rev 83298)
+++ lovely.responsecache/trunk/src/lovely/responsecache/purge.py 2008-01-29 15:31:25 UTC (rev 83299)
@@ -37,12 +37,12 @@
"""Utilty to purge mutliple caches"""
interface.implements(interfaces.IPurge)
- failedHosts = {}
-
def __init__(self, hosts, timeout, retryDelay):
self.hosts = hosts
self.timeout = timeout
self.retryDelay = retryDelay
+ self.failedHosts = {}
+ self.failLock = threading.Lock()
def purge(self, expr, escapes='+-'):
for esc in escapes:
@@ -57,17 +57,22 @@
if exprs is None:
return
for host in self.hosts:
+ self.failLock.acquire()
if host in self.failedHosts.keys():
if self.failedHosts[host] + self.retryDelay > time():
+ self.failLock.release()
continue
else:
del self.failedHosts[host]
+ self.failLock.release()
def urls(exprs):
for expr in exprs:
url = self._expr2URL(expr)
yield urlparse.urlunparse(urlparse.urlparse(host)[:2] + url)
if not self._purgeURLs(urls(exprs)):
+ self.failLock.acquire()
self.failedHosts[host] = time()
+ self.failLock.release()
delattr(storage, EXPRS_ATTR)
def _expr2URL(self, expr):
More information about the Checkins
mailing list