reported via error monitor:
Fri Jul 15 09:19:02 2011 Exception when processing https://karl.soros.org/communities/gdpp/files/move_files.json Referer: https://karl.soros.org/communities/gdpp/files/ Traceback (most recent call last): File "/srv/osfkarl/production/27/eggs/karl-3.68-py2.6.egg/karl/errorlog.py", line 16, in middleware return app(environ, start_response) File "/srv/osfkarl/production/27/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/27/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/27/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/27/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/27/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/27/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/27/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/27/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/27/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/27/eggs/karl-3.68-py2.6.egg/karl/content/views/files.py", line 1099, in ajax_file_reorganize_moveto_view del context[filename] File "/srv/osfkarl/production/27/eggs/repoze.folder-0.6.2-py2.6.egg/repoze/folder/__init__.py", line 151, in __delitem__ return self.remove(name) File "/srv/osfkarl/production/27/eggs/repoze.folder-0.6.2-py2.6.egg/repoze/folder/__init__.py", line 160, in remove objectEventNotify(ObjectWillBeRemovedEvent(other, self, name)) File "/srv/osfkarl/production/27/eggs/zope.component-3.6.0-py2.6.egg/zope/component/event.py", line 33, in objectEventNotify adapters = zope.component.subscribers((event.object, event), None) File "/srv/osfkarl/production/27/eggs/zope.component-3.6.0-py2.6.egg/zope/component/_api.py", line 138, in subscribers return sitemanager.subscribers(objects, interface) File "/srv/osfkarl/production/27/eggs/zope.component-3.6.0-py2.6.egg/zope/component/registry.py", line 315, in subscribers return self.adapters.subscribers(objects, provided) File "/srv/osfkarl/production/27/eggs/zope.interface-3.5.1-py2.6-linux-i686.egg/zope/interface/adapter.py", line 535, in subscribers subscription(*objects) File "/srv/osfkarl/production/27/eggs/karl-3.68-py2.6.egg/karl/models/subscribers.py", line 94, in handle_content_removed unindex_content(obj, docids) File "/srv/osfkarl/production/27/eggs/karl-3.68-py2.6.egg/karl/models/subscribers.py", line 75, in unindex_content catalog.unindex_doc(docid) File "/srv/osfkarl/production/27/eggs/karl-3.68-py2.6.egg/karl/models/catalog.py", line 45, in unindex_doc super(CachingCatalog, self).unindex_doc(*arg, **kw) File "/srv/osfkarl/production/27/eggs/repoze.catalog-0.7.3-py2.6.egg/repoze/catalog/catalog.py", line 37, in unindex_doc index.unindex_doc(docid) File "/srv/osfkarl/production/27/eggs/repoze.pgtextindex-0.3-py2.6.egg/repoze/pgtextindex/index.py", line 212, in unindex_doc self.cursor.execute(stmt, (docid,)) TransactionRollbackError: could not serialize access due to concurrent update
This is the SQL equivalent of a ConflictError and should be handled the same way: the transaction should be retried automatically up to 3 times. If we tell repoze.tm2 about the exception class, it should be able to handle the job.