# HG changeset patch # User Sylvain Thénault # Date 1330362923 -3600 # Node ID 17c588eca3c2aa8646f4caf4201847543b042b3f # Parent 8b173e0a617f8794a017684964fcbbc5638fc57f [repo services] set cnxset before calling the service then ensure it's freed diff -r 8b173e0a617f -r 17c588eca3c2 server/repository.py --- a/server/repository.py Mon Feb 27 13:00:36 2012 +0100 +++ b/server/repository.py Mon Feb 27 18:15:23 2012 +0100 @@ -887,9 +887,12 @@ and :class:`cubicweb.server.Service` """ def task(): - session = self._get_session(sessionid) + session = self._get_session(sessionid, setcnxset=True) service = session.vreg['services'].select(regid, session, **kwargs) - return service.call(session, **kwargs) + try: + return service.call(session, **kwargs) + finally: + session.rollback() # free cnxset if async: self.info('calling service %s asynchronously', regid) self.threaded_task(task)