@@ -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
@@ -140,21 +141,25 @@ def get_ydb_request_settings(self) -> ydb.BaseRequestSettings:
140
141
def begin (self ):
141
142
self .tx_context = None
142
143
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 )
145
146
self ._maybe_await (self .tx_context .begin )
146
147
147
148
def commit (self ):
148
149
if self .tx_context and self .tx_context .tx_id :
149
150
self ._maybe_await (self .tx_context .commit )
150
- self ._maybe_await (self .session_pool .release , self .tx_context .session )
151
151
self .tx_context = None
152
+ if self .session :
153
+ self ._maybe_await (self .session_pool .release , self .session )
154
+ self .session = None
152
155
153
156
def rollback (self ):
154
157
if self .tx_context and self .tx_context .tx_id :
155
158
self ._maybe_await (self .tx_context .rollback )
156
- self ._maybe_await (self .session_pool .release , self .tx_context .session )
157
159
self .tx_context = None
160
+ if self .session :
161
+ self ._maybe_await (self .session_pool .release , self .session )
162
+ self .session = None
158
163
159
164
def close (self ):
160
165
self .rollback ()
0 commit comments