server/session.py
branchstable
changeset 2063 fe4278b50388
parent 2055 e4283fc56873
child 2100 89b825cdec74
equal deleted inserted replaced
2062:20f18837107c 2063:fe4278b50388
   157             raise Exception('try to set pool on a closed session')
   157             raise Exception('try to set pool on a closed session')
   158         if self.pool is None:
   158         if self.pool is None:
   159             # get pool first to avoid race-condition
   159             # get pool first to avoid race-condition
   160             self._threaddata.pool = self.repo._get_pool()
   160             self._threaddata.pool = self.repo._get_pool()
   161             try:
   161             try:
   162                 self._threaddata.pool.pool_set(self)
   162                 self._threaddata.pool.pool_set()
   163             except:
   163             except:
   164                 self._threaddata.pool = None
   164                 self._threaddata.pool = None
   165                 self.repo._free_pool(self.pool)
   165                 self.repo._free_pool(self.pool)
   166                 raise
   166                 raise
   167             self._threads_in_transaction.add(threading.currentThread())
   167             self._threads_in_transaction.add(threading.currentThread())
   174         # or rollback
   174         # or rollback
   175         if self.pool is not None and self.mode == 'read':
   175         if self.pool is not None and self.mode == 'read':
   176             # even in read mode, we must release the current transaction
   176             # even in read mode, we must release the current transaction
   177             pool = self.pool
   177             pool = self.pool
   178             self._threads_in_transaction.remove(threading.currentThread())
   178             self._threads_in_transaction.remove(threading.currentThread())
   179             pool.pool_reset(self)
   179             pool.pool_reset()
   180             self._threaddata.pool = None
   180             self._threaddata.pool = None
   181             # free pool once everything is done to avoid race-condition
   181             # free pool once everything is done to avoid race-condition
   182             self.repo._free_pool(pool)
   182             self.repo._free_pool(pool)
   183 
   183 
   184     def system_sql(self, sql, args=None):
   184     def system_sql(self, sql, args=None):