server/repository.py
branchstable
changeset 1880 293fe4b49e28
parent 1664 03ebeccf9f1d
child 1883 011e13d74cfc
--- a/server/repository.py	Wed May 20 11:55:33 2009 +0200
+++ b/server/repository.py	Wed May 20 14:19:02 2009 +0200
@@ -217,6 +217,7 @@
         self._get_pool().close(True)
         for i in xrange(config['connections-pool-size']):
             self._available_pools.put_nowait(ConnectionsPool(self.sources))
+        self._shuting_down = False
 
     # internals ###############################################################
 
@@ -349,6 +350,7 @@
         """called on server stop event to properly close opened sessions and
         connections
         """
+        self._shuting_down = True
         if isinstance(self._looping_tasks, tuple): # if tasks have been started
             for looptask in self._looping_tasks:
                 self.info('canceling task %s...', looptask.name)
@@ -618,7 +620,7 @@
         """commit transaction for the session with the given id"""
         self.debug('begin commit for session %s', sessionid)
         try:
-            self._get_session(sessionid, setpool=True).commit()
+            self._get_session(sessionid).commit()
         except (ValidationError, Unauthorized):
             raise
         except:
@@ -629,7 +631,7 @@
         """commit transaction for the session with the given id"""
         self.debug('begin rollback for session %s', sessionid)
         try:
-            self._get_session(sessionid, setpool=True).rollback()
+            self._get_session(sessionid).rollback()
         except:
             self.exception('unexpected error')
             raise
@@ -720,6 +722,8 @@
 
     def _get_session(self, sessionid, setpool=False):
         """return the user associated to the given session identifier"""
+        if self._shuting_down:
+            raise Exception('Repository is shuting down')
         try:
             session = self._sessions[sessionid]
         except KeyError: