equal
deleted
inserted
replaced
634 self._get_session(sessionid).rollback() |
634 self._get_session(sessionid).rollback() |
635 except: |
635 except: |
636 self.exception('unexpected error') |
636 self.exception('unexpected error') |
637 raise |
637 raise |
638 |
638 |
639 def close(self, sessionid): |
639 def close(self, sessionid, checkshuttingdown=True): |
640 """close the session with the given id""" |
640 """close the session with the given id""" |
641 session = self._get_session(sessionid, setpool=True) |
641 session = self._get_session(sessionid, setpool=True, |
|
642 checkshuttingdown=checkshuttingdown) |
642 # operation uncommited before close are rollbacked before hook is called |
643 # operation uncommited before close are rollbacked before hook is called |
643 session.rollback() |
644 session.rollback() |
644 self.hm.call_hooks('session_close', session=session) |
645 self.hm.call_hooks('session_close', session=session) |
645 # commit session at this point in case write operation has been done |
646 # commit session at this point in case write operation has been done |
646 # during `session_close` hooks |
647 # during `session_close` hooks |
689 |
690 |
690 def close_sessions(self): |
691 def close_sessions(self): |
691 """close every opened sessions""" |
692 """close every opened sessions""" |
692 for sessionid in self._sessions.keys(): |
693 for sessionid in self._sessions.keys(): |
693 try: |
694 try: |
694 self.close(sessionid) |
695 self.close(sessionid, checkshuttingdown=False) |
695 except: |
696 except: |
696 self.exception('error while closing session %s' % sessionid) |
697 self.exception('error while closing session %s' % sessionid) |
697 |
698 |
698 def clean_sessions(self): |
699 def clean_sessions(self): |
699 """close sessions not used since an amount of time specified in the |
700 """close sessions not used since an amount of time specified in the |
718 """ |
719 """ |
719 session = InternalSession(self, cnxprops) |
720 session = InternalSession(self, cnxprops) |
720 session.set_pool() |
721 session.set_pool() |
721 return session |
722 return session |
722 |
723 |
723 def _get_session(self, sessionid, setpool=False): |
724 def _get_session(self, sessionid, setpool=False, checkshuttingdown=True): |
724 """return the user associated to the given session identifier""" |
725 """return the user associated to the given session identifier""" |
725 if self._shutting_down: |
726 if checkshuttingdown and self._shutting_down: |
726 raise Exception('Repository is shutting down') |
727 raise Exception('Repository is shutting down') |
727 try: |
728 try: |
728 session = self._sessions[sessionid] |
729 session = self._sessions[sessionid] |
729 except KeyError: |
730 except KeyError: |
730 raise BadConnectionId('No such session %s' % sessionid) |
731 raise BadConnectionId('No such session %s' % sessionid) |