@@ -57,6 +57,7 @@ def __init__(
57
57
self .interactive_transaction : bool = False # AUTOCOMMIT
58
58
self .tx_mode : ydb .AbstractTransactionModeBuilder = ydb .SerializableReadWrite ()
59
59
self .tx_context : Optional [ydb .TxContext ] = None
60
+ self .session : Optional [ydb .Session ] = None
60
61
self .use_scan_query : bool = False
61
62
self .request_settings : ydb .BaseRequestSettings = ydb .BaseRequestSettings ()
62
63
@@ -139,22 +140,29 @@ def get_ydb_request_settings(self) -> ydb.BaseRequestSettings:
139
140
140
141
def begin (self ):
141
142
self .tx_context = None
143
+ if self .session :
144
+ self ._maybe_await (self .session_pool .release , self .session )
145
+ self .session = None
142
146
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 )
147
+ self . session = self ._maybe_await (self .session_pool .acquire )
148
+ self .tx_context = self . session .transaction (self .tx_mode )
145
149
self ._maybe_await (self .tx_context .begin )
146
150
147
151
def commit (self ):
148
152
if self .tx_context and self .tx_context .tx_id :
149
153
self ._maybe_await (self .tx_context .commit )
150
- self ._maybe_await (self .session_pool .release , self .tx_context .session )
151
154
self .tx_context = None
155
+ if self .session :
156
+ self ._maybe_await (self .session_pool .release , self .session )
157
+ self .session = None
152
158
153
159
def rollback (self ):
154
160
if self .tx_context and self .tx_context .tx_id :
155
161
self ._maybe_await (self .tx_context .rollback )
156
- self ._maybe_await (self .session_pool .release , self .tx_context .session )
157
162
self .tx_context = None
163
+ if self .session :
164
+ self ._maybe_await (self .session_pool .release , self .session )
165
+ self .session = None
158
166
159
167
def close (self ):
160
168
self .rollback ()
0 commit comments