equal
deleted
inserted
replaced
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): |