Skip to content

Commit 38f8c4d

Browse files
committed
add bad session handler to execute query
1 parent 7d03938 commit 38f8c4d

File tree

5 files changed

+18
-11
lines changed

5 files changed

+18
-11
lines changed

ydb/aio/query/session.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ async def execute(
139139
lambda resp: base.wrap_execute_query_response(
140140
rpc_state=None,
141141
response_pb=resp,
142+
session_state=self._state,
142143
settings=self._settings,
143144
),
144145
)

ydb/aio/query/transaction.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ async def execute(
146146
lambda resp: base.wrap_execute_query_response(
147147
rpc_state=None,
148148
response_pb=resp,
149+
session_state=self._session_state,
149150
tx=self,
150151
commit_tx=commit_tx,
151152
settings=self.session._settings,

ydb/query/base.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -165,9 +165,23 @@ def create_execute_query_request(
165165
)
166166

167167

168+
def bad_session_handler(func):
169+
@functools.wraps(func)
170+
def decorator(rpc_state, response_pb, session_state: IQuerySessionState, *args, **kwargs):
171+
try:
172+
return func(rpc_state, response_pb, session_state, *args, **kwargs)
173+
except issues.BadSession:
174+
session_state.reset()
175+
raise
176+
177+
return decorator
178+
179+
180+
@bad_session_handler
168181
def wrap_execute_query_response(
169182
rpc_state: RpcState,
170183
response_pb: _apis.ydb_query.ExecuteQueryResponsePart,
184+
session_state: IQuerySessionState,
171185
tx: Optional["BaseQueryTxContext"] = None,
172186
commit_tx: Optional[bool] = False,
173187
settings: Optional[QueryClientSettings] = None,
@@ -179,14 +193,3 @@ def wrap_execute_query_response(
179193
tx._move_to_commited()
180194
return convert.ResultSet.from_message(response_pb.result_set, settings)
181195

182-
183-
def bad_session_handler(func):
184-
@functools.wraps(func)
185-
def decorator(rpc_state, response_pb, session_state: IQuerySessionState, *args, **kwargs):
186-
try:
187-
return func(rpc_state, response_pb, session_state, *args, **kwargs)
188-
except issues.BadSession:
189-
session_state.reset()
190-
raise
191-
192-
return decorator

ydb/query/session.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ def execute(
318318
lambda resp: base.wrap_execute_query_response(
319319
rpc_state=None,
320320
response_pb=resp,
321+
session_state=self._state,
321322
settings=self._settings,
322323
),
323324
)

ydb/query/transaction.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,7 @@ def execute(
427427
lambda resp: base.wrap_execute_query_response(
428428
rpc_state=None,
429429
response_pb=resp,
430+
session_state=self._session_state,
430431
tx=self,
431432
commit_tx=commit_tx,
432433
settings=self.session._settings,

0 commit comments

Comments
 (0)