--- 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: