Skip to content

Commit 6e8fa94

Browse files
author
Bogdan Markov
committed
Fix: release sessions without transaction.
1 parent 05d9299 commit 6e8fa94

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

ydb_sqlalchemy/dbapi/connection.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ def __init__(
5757
self.interactive_transaction: bool = False # AUTOCOMMIT
5858
self.tx_mode: ydb.AbstractTransactionModeBuilder = ydb.SerializableReadWrite()
5959
self.tx_context: Optional[ydb.TxContext] = None
60+
self.session: Optional[ydb.Session] = None
6061
self.use_scan_query: bool = False
6162
self.request_settings: ydb.BaseRequestSettings = ydb.BaseRequestSettings()
6263

@@ -140,21 +141,25 @@ def get_ydb_request_settings(self) -> ydb.BaseRequestSettings:
140141
def begin(self):
141142
self.tx_context = None
142143
if self.interactive_transaction and not self.use_scan_query:
143-
session = self._maybe_await(self.session_pool.acquire)
144-
self.tx_context = session.transaction(self.tx_mode)
144+
self.session = self._maybe_await(self.session_pool.acquire)
145+
self.tx_context = self.session.transaction(self.tx_mode)
145146
self._maybe_await(self.tx_context.begin)
146147

147148
def commit(self):
148149
if self.tx_context and self.tx_context.tx_id:
149150
self._maybe_await(self.tx_context.commit)
150-
self._maybe_await(self.session_pool.release, self.tx_context.session)
151151
self.tx_context = None
152+
if self.session:
153+
self._maybe_await(self.session_pool.release, self.session)
154+
self.session = None
152155

153156
def rollback(self):
154157
if self.tx_context and self.tx_context.tx_id:
155158
self._maybe_await(self.tx_context.rollback)
156-
self._maybe_await(self.session_pool.release, self.tx_context.session)
157159
self.tx_context = None
160+
if self.session:
161+
self._maybe_await(self.session_pool.release, self.session)
162+
self.session = None
158163

159164
def close(self):
160165
self.rollback()

0 commit comments

Comments
 (0)