From the error monitor:
Wed Jun 1 03:47:45 2011 Exception when processing https://karl.soros.org/jquery_livesearch?val=LAHE* Referer: https://karl.soros.org/searchresults.html?body=OSF%20Law%20and%20Health%20Initiative%27s%20Technical%20Advisory Traceback (most recent call last): File "/srv/osfkarl/production/20/eggs/karl-3.61-py2.6.egg/karl/errorlog.py", line 16, in middleware return app(environ, start_response) File "/srv/osfkarl/production/20/eggs/repoze.retry-0.9.4-py2.6.egg/repoze/retry/__init__.py", line 88, in __call__ app_iter = self.application(environ, replace_start_response) File "/srv/osfkarl/production/20/eggs/repoze.zodbconn-0.11-py2.6.egg/repoze/zodbconn/connector.py", line 21, in __call__ result = self.next_app(environ, start_response) File "/srv/osfkarl/production/20/eggs/repoze.tm2-1.0a5-py2.6.egg/repoze/tm/__init__.py", line 23, in __call__ result = self.application(environ, save_status_and_headers) File "/srv/osfkarl/production/20/eggs/repoze.who-1.0.15-py2.6.egg/repoze/who/middleware.py", line 107, in __call__ app_iter = app(environ, wrapper.wrap_start_response) File "/srv/osfkarl/production/20/eggs/repoze.urchin-0.1-py2.6.egg/repoze/urchin/__init__.py", line 20, in __call__ resp = req.get_response(self.app) File "/srv/osfkarl/production/20/eggs/WebOb-0.9.8.0_osi1-py2.6.egg/webob/request.py", line 920, in get_response application, catch_exc_info=False) File "/srv/osfkarl/production/20/eggs/WebOb-0.9.8.0_osi1-py2.6.egg/webob/request.py", line 888, in call_application app_iter = application(self.environ, start_response) File "/srv/osfkarl/production/20/eggs/repoze.bfg-1.2-py2.6.egg/repoze/bfg/router.py", line 130, in __call__ response = view_callable(context, request) File "/srv/osfkarl/production/20/eggs/repoze.bfg-1.2-py2.6.egg/repoze/bfg/configuration.py", line 1753, in _secured_view return view(context, request) File "/srv/osfkarl/production/20/eggs/karl-3.61-py2.6.egg/karl/views/search.py", line 368, in jquery_livesearch_view num, docids, resolver = factory() File "/srv/osfkarl/production/20/eggs/karl-3.61-py2.6.egg/karl/utilities/groupsearch.py", line 65, in __call__ num, docids, resolver = searcher(**criteria) File "/srv/osfkarl/production/20/eggs/karl-3.61-py2.6.egg/karl/models/adapters.py", line 73, in __call__ num, docids = self.catalog.search(**kw) File "/srv/osfkarl/production/20/eggs/karl-3.61-py2.6.egg/karl/models/catalog.py", line 107, in search cache[key] = (num, docids) File "/srv/osfkarl/production/20/eggs/karl-3.61-py2.6.egg/karl/utilities/lru.py", line 65, in __setitem__ current = clock[hand] IndexError: list index out of range
The LRU cache implementation used by the catalog was not truly threadsafe. I have increased the amount of the LRU code now protected by a lock. (Pretty much all of it.)