Skip to content

Commit 09553e2

Browse files
committed
Add ability to propagate RetrySettings
1 parent ddda01e commit 09553e2

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

ydb_dbapi/connections.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def __init__(
117117
self.request_settings: ydb.BaseRequestSettings = (
118118
ydb.BaseRequestSettings()
119119
)
120+
self.retry_settings: ydb.RetrySettings = ydb.RetrySettings()
120121

121122
def set_isolation_level(self, isolation_level: IsolationLevel) -> None:
122123
if self._tx_context and self._tx_context.tx_id:
@@ -151,6 +152,12 @@ def set_ydb_request_settings(self, value: ydb.BaseRequestSettings) -> None:
151152
def get_ydb_request_settings(self) -> ydb.BaseRequestSettings:
152153
return self.request_settings
153154

155+
def set_ydb_retry_settings(self, value: ydb.RetrySettings) -> None:
156+
self.retry_settings = value
157+
158+
def get_ydb_retry_settings(self) -> ydb.RetrySettings:
159+
return self.retry_settings
160+
154161
def _get_request_settings(self) -> ydb.BaseRequestSettings:
155162
settings = self.request_settings.make_copy()
156163

@@ -210,6 +217,7 @@ def cursor(self) -> Cursor:
210217
tx_context=self._tx_context,
211218
table_path_prefix=self.table_path_prefix,
212219
request_settings=self.request_settings,
220+
retry_settings=self.retry_settings,
213221
)
214222

215223
def wait_ready(self, timeout: int = 10) -> None:
@@ -402,6 +410,7 @@ def cursor(self) -> AsyncCursor:
402410
tx_context=self._tx_context,
403411
table_path_prefix=self.table_path_prefix,
404412
request_settings=self.request_settings,
413+
retry_settings=self.retry_settings,
405414
)
406415

407416
async def wait_ready(self, timeout: int = 10) -> None:

ydb_dbapi/cursors.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ def __init__(
199199
session_pool: ydb.QuerySessionPool,
200200
tx_mode: ydb.BaseQueryTxMode,
201201
request_settings: ydb.BaseRequestSettings,
202+
retry_settings: ydb.RetrySettings,
202203
tx_context: ydb.QueryTxContext | None = None,
203204
table_path_prefix: str = "",
204205
) -> None:
@@ -207,9 +208,9 @@ def __init__(
207208
self._session_pool = session_pool
208209
self._tx_mode = tx_mode
209210
self._request_settings = request_settings
211+
self._retry_settings = retry_settings
210212
self._tx_context = tx_context
211213
self._table_path_prefix = table_path_prefix
212-
213214
self._stream: Iterator | None = None
214215

215216
def fetchone(self) -> tuple | None:
@@ -253,7 +254,10 @@ def callee(
253254
)
254255
)
255256

256-
return self._session_pool.retry_operation_sync(callee)
257+
return self._session_pool.retry_operation_sync(
258+
callee,
259+
retry_settings=self._retry_settings,
260+
)
257261

258262
@handle_ydb_errors
259263
@invalidate_cursor_on_ydb_error
@@ -276,7 +280,10 @@ def callee(
276280
)
277281
)
278282

279-
return self._session_pool.retry_operation_sync(callee)
283+
return self._session_pool.retry_operation_sync(
284+
callee,
285+
retry_settings=self._retry_settings,
286+
)
280287

281288
@handle_ydb_errors
282289
@invalidate_cursor_on_ydb_error
@@ -369,6 +376,7 @@ def __init__(
369376
session_pool: ydb.aio.QuerySessionPool,
370377
tx_mode: ydb.BaseQueryTxMode,
371378
request_settings: ydb.BaseRequestSettings,
379+
retry_settings: ydb.RetrySettings,
372380
tx_context: ydb.aio.QueryTxContext | None = None,
373381
table_path_prefix: str = "",
374382
) -> None:
@@ -377,9 +385,9 @@ def __init__(
377385
self._session_pool = session_pool
378386
self._tx_mode = tx_mode
379387
self._request_settings = request_settings
388+
self._retry_settings = retry_settings
380389
self._tx_context = tx_context
381390
self._table_path_prefix = table_path_prefix
382-
383391
self._stream: AsyncIterator | None = None
384392

385393
def fetchone(self) -> tuple | None:
@@ -423,7 +431,10 @@ async def callee(
423431
)
424432
)
425433

426-
return await self._session_pool.retry_operation_async(callee)
434+
return await self._session_pool.retry_operation_async(
435+
callee,
436+
retry_settings=self._retry_settings,
437+
)
427438

428439
@handle_ydb_errors
429440
@invalidate_cursor_on_ydb_error
@@ -446,7 +457,10 @@ async def callee(
446457
)
447458
)
448459

449-
return await self._session_pool.retry_operation_async(callee)
460+
return await self._session_pool.retry_operation_async(
461+
callee,
462+
retry_settings=self._retry_settings,
463+
)
450464

451465
@handle_ydb_errors
452466
@invalidate_cursor_on_ydb_error

0 commit comments

Comments
 (0)