server/repository.py
changeset 9008 e0aa7cf8abf8
parent 9007 e27337dfec8c
child 9020 cb87e831c183
child 9132 b6bcf99504c9
equal deleted inserted replaced
9007:e27337dfec8c 9008:e0aa7cf8abf8
   883         self.hm.call_hooks('session_close', session)
   883         self.hm.call_hooks('session_close', session)
   884         # commit session at this point in case write operation has been done
   884         # commit session at this point in case write operation has been done
   885         # during `session_close` hooks
   885         # during `session_close` hooks
   886         session.commit()
   886         session.commit()
   887         session.close()
   887         session.close()
       
   888         if threading.currentThread() in self._pyro_sessions:
       
   889             self._pyro_sessions[threading.currentThread()] = None
   888         del self._sessions[sessionid]
   890         del self._sessions[sessionid]
   889         self.info('closed session %s for user %s', sessionid, session.user.login)
   891         self.info('closed session %s for user %s', sessionid, session.user.login)
   890 
   892 
   891     def call_service(self, sessionid, regid, async, **kwargs):
   893     def call_service(self, sessionid, regid, async, **kwargs):
   892         """
   894         """
  1652             sessions[threading.currentThread()] = None
  1654             sessions[threading.currentThread()] = None
  1653             return tcpserver.getAdapter().__class__.handleConnection(tcpserver.getAdapter(), conn, tcpserver)
  1655             return tcpserver.getAdapter().__class__.handleConnection(tcpserver.getAdapter(), conn, tcpserver)
  1654         daemon.getAdapter().handleConnection = handleConnection
  1656         daemon.getAdapter().handleConnection = handleConnection
  1655         def removeConnection(conn, sessions=pyro_sessions):
  1657         def removeConnection(conn, sessions=pyro_sessions):
  1656             daemon.__class__.removeConnection(daemon, conn)
  1658             daemon.__class__.removeConnection(daemon, conn)
  1657             try:
  1659             session = sessions.pop(threading.currentThread(), None)
  1658                 session = sessions[threading.currentThread()]
       
  1659             except KeyError:
       
  1660                 return
       
  1661             if session is None:
  1660             if session is None:
  1662                 # client was not yet connected to the repo
  1661                 # client was not yet connected to the repo
  1663                 return
  1662                 return
  1664             if not session.closed:
  1663             if not session.closed:
  1665                 session.close()
  1664                 session.close()