X-Git-Url: https://scm.cri.mines-paristech.fr/git/Portfolio.git/blobdiff_plain/2d47c9c3dc8e8265381e167514626f854a2a6f2b..538c7c6bc43c5670b8688f669c83aba7185d32e7:/manipulation.py?ds=sidebyside diff --git a/manipulation.py b/manipulation.py index a4623ba..dcba20d 100755 --- a/manipulation.py +++ b/manipulation.py @@ -18,6 +18,8 @@ from types import StringTypes from math import ceil import transaction from ZODB.POSException import ConflictError +from ZODB.POSException import ConnectionStateError +from zope.site.hooks import setSite from cStringIO import StringIO console = logging.getLogger('[manipulation thread]') @@ -50,15 +52,17 @@ class ImageQueueProcessorThread(threading.Thread) : #atexit.register(self.stop) import Zope2 app = Zope2.app() + portal = app.unrestrictedTraverse(self.portal_path) + setSite(portal) while not self.__stopped and self.queueSize : self._process(app) con = app._p_jar - con.close() - #con.close() + try : + con.close() + except ConnectionStateError, e : + console.warn('ConnectionStateError raised before finished.') console.info('process finished.') - #print con - #print con.transaction_manager def stop(self): @@ -122,13 +126,14 @@ class ImageQueueProcessorThread(threading.Thread) : pass p.tiles_available = 1 + assert p._getCatalogTool() p.reindexObject(idxs=['tiles_available']) transaction.commit() except ConflictError : console.warn('Resync after ZODB ConflicError') transaction.abort() - portal = app.unrestrictedTraverse(portal_path) + portal = app.unrestrictedTraverse(self.portal_path) portal._p_jar.sync() self.queueAdd(path) return