diff -r f36d43f00f32 -r 874a055c373b server/repository.py --- a/server/repository.py Thu May 21 00:44:57 2009 +0200 +++ b/server/repository.py Thu May 21 00:50:24 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._shutting_down = False # internals ############################################################### @@ -349,6 +350,7 @@ """called on server stop event to properly close opened sessions and connections """ + self._shutting_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._shutting_down: + raise Exception('Repository is shutting down') try: session = self._sessions[sessionid] except KeyError: