diff options
| author | robot-piglet <[email protected]> | 2026-04-28 07:50:56 +0300 |
|---|---|---|
| committer | robot-piglet <[email protected]> | 2026-04-28 08:04:40 +0300 |
| commit | 92d4e7d90274c11f6cf619ebcb561f92c08cd149 (patch) | |
| tree | 891a41701ea187dd37d3f8f7c8760d821c25a14f /contrib/python | |
| parent | b43d16290e56ff33972f637a0b7410f966988871 (diff) | |
Intermediate changes
commit_hash:920d7eff2d07d52548510bbf182e9318d21c8c2d
Diffstat (limited to 'contrib/python')
| -rw-r--r-- | contrib/python/ydb/py3/.dist-info/METADATA | 2 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ya.make | 2 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/aio/query/pool.py | 1 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/aio/query/session.py | 6 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/aio/query/transaction.py | 2 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/query/base.py | 2 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/query/pool.py | 1 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/query/session.py | 22 | ||||
| -rw-r--r-- | contrib/python/ydb/py3/ydb/ydb_version.py | 2 |
9 files changed, 22 insertions, 18 deletions
diff --git a/contrib/python/ydb/py3/.dist-info/METADATA b/contrib/python/ydb/py3/.dist-info/METADATA index c9e4bb99485..1a96485283a 100644 --- a/contrib/python/ydb/py3/.dist-info/METADATA +++ b/contrib/python/ydb/py3/.dist-info/METADATA @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ydb -Version: 3.28.2 +Version: 3.28.3 Summary: YDB Python SDK Home-page: http://github.com/ydb-platform/ydb-python-sdk Author: Yandex LLC diff --git a/contrib/python/ydb/py3/ya.make b/contrib/python/ydb/py3/ya.make index 87991083694..9977d7bc6fc 100644 --- a/contrib/python/ydb/py3/ya.make +++ b/contrib/python/ydb/py3/ya.make @@ -2,7 +2,7 @@ PY3_LIBRARY() -VERSION(3.28.2) +VERSION(3.28.3) LICENSE(Apache-2.0) diff --git a/contrib/python/ydb/py3/ydb/aio/query/pool.py b/contrib/python/ydb/py3/ydb/aio/query/pool.py index 45fa1acbe9b..a0d9d93c982 100644 --- a/contrib/python/ydb/py3/ydb/aio/query/pool.py +++ b/contrib/python/ydb/py3/ydb/aio/query/pool.py @@ -137,7 +137,6 @@ class QuerySessionPool: async def release(self, session: QuerySession) -> None: """Release a session back to Session Pool.""" - self._queue.put_nowait(session) logger.debug("Session returned to queue: %s", session.session_id) diff --git a/contrib/python/ydb/py3/ydb/aio/query/session.py b/contrib/python/ydb/py3/ydb/aio/query/session.py index 67e62ff66ec..a565b266e82 100644 --- a/contrib/python/ydb/py3/ydb/aio/query/session.py +++ b/contrib/python/ydb/py3/ydb/aio/query/session.py @@ -62,7 +62,7 @@ class QuerySession(BaseQuerySession["AsyncDriver"]): ) issues._process_response(first_response) except Exception as e: - self._invalidate() + self._close_session(invalidate=True) raise e self._loop.create_task(self._check_session_status_loop(), name="check session status task") @@ -76,7 +76,7 @@ class QuerySession(BaseQuerySession["AsyncDriver"]): logger.debug("Attach stream closed, session_id: %s", self._session_id) except Exception as e: logger.debug("Attach stream error: %s, session_id: %s", e, self._session_id) - self._invalidate() + self._close_session(invalidate=True) async def delete(self, settings: Optional[BaseRequestSettings] = None) -> None: """Deletes a Session of Query Service on server side and releases resources. @@ -92,7 +92,7 @@ class QuerySession(BaseQuerySession["AsyncDriver"]): except Exception: pass - self._invalidate() + self._close_session() async def create(self, settings: Optional[BaseRequestSettings] = None) -> "QuerySession": """Creates a Session of Query Service on server side and attaches it. diff --git a/contrib/python/ydb/py3/ydb/aio/query/transaction.py b/contrib/python/ydb/py3/ydb/aio/query/transaction.py index e423258025f..c31d79fb088 100644 --- a/contrib/python/ydb/py3/ydb/aio/query/transaction.py +++ b/contrib/python/ydb/py3/ydb/aio/query/transaction.py @@ -72,7 +72,7 @@ class QueryTxContext(BaseQueryTxContext["AsyncDriver"]): logger.warning("Failed to rollback leaked tx: %s", self._tx_state.tx_id) except BaseException: logger.warning("Failed to rollback leaked tx: %s", self._tx_state.tx_id) - self.session._invalidate() + self.session._close_session(invalidate=True) async def _ensure_prev_stream_finished(self) -> None: if self._prev_stream is not None: diff --git a/contrib/python/ydb/py3/ydb/query/base.py b/contrib/python/ydb/py3/ydb/query/base.py index bf0d80b9dad..7fea6cd0e8c 100644 --- a/contrib/python/ydb/py3/ydb/query/base.py +++ b/contrib/python/ydb/py3/ydb/query/base.py @@ -205,7 +205,7 @@ def bad_session_handler(func): try: return func(rpc_state, response_pb, session, *args, **kwargs) except issues.BadSession: - session._invalidate() + session._close_session(invalidate=True) raise return decorator diff --git a/contrib/python/ydb/py3/ydb/query/pool.py b/contrib/python/ydb/py3/ydb/query/pool.py index cba3e47e3a1..44d4d34af16 100644 --- a/contrib/python/ydb/py3/ydb/query/pool.py +++ b/contrib/python/ydb/py3/ydb/query/pool.py @@ -125,7 +125,6 @@ class QuerySessionPool: def release(self, session: QuerySession) -> None: """Release a session back to Session Pool.""" - self._queue.put_nowait(session) logger.debug("Session returned to queue: %s", session.session_id) diff --git a/contrib/python/ydb/py3/ydb/query/session.py b/contrib/python/ydb/py3/ydb/query/session.py index b28cba8baed..f2099f8cdbf 100644 --- a/contrib/python/ydb/py3/ydb/query/session.py +++ b/contrib/python/ydb/py3/ydb/query/session.py @@ -56,7 +56,6 @@ def wrapper_delete_session( ) -> "BaseQuerySession": message = _ydb_query.DeleteSessionResponse.from_proto(response_pb) issues._process_response(message.status) - session._closed = True return session @@ -71,6 +70,7 @@ class BaseQuerySession(abc.ABC, Generic[DriverT]): _session_id: Optional[str] = None _node_id: Optional[int] = None _closed: bool = False + _invalidated: bool = False def __init__(self, driver: DriverT, settings: Optional[base.QueryClientSettings] = None): self._driver = driver @@ -122,12 +122,18 @@ class BaseQuerySession(abc.ABC, Generic[DriverT]): return base.QueryClientSettings() def _check_session_ready_to_use(self) -> None: - if not self.is_active: + if self._session_id is None: + raise RuntimeError("Session is not initialized") + if self._invalidated: + raise issues.BadSession(f"Session is not active, session_id: {self._session_id}, closed: {self._closed}") + if self._closed: raise RuntimeError(f"Session is not active, session_id: {self._session_id}, closed: {self._closed}") - def _invalidate(self) -> None: + def _close_session(self, invalidate: bool = False) -> None: if self._closed: return + if invalidate: + self._invalidated = True self._closed = True if self._stream is not None: @@ -161,9 +167,9 @@ class BaseQuerySession(abc.ABC, Generic[DriverT]): issues.Cancelled, ), ): - self._invalidate() + self._close_session(invalidate=True) else: - self._invalidate() + self._close_session(invalidate=True) # Overloads for _create_call @overload @@ -339,7 +345,7 @@ class QuerySession(BaseQuerySession["SyncDriver"]): ) issues._process_response(first_response) except Exception as e: - self._invalidate() + self._close_session(invalidate=True) raise e threading.Thread( @@ -356,7 +362,7 @@ class QuerySession(BaseQuerySession["SyncDriver"]): logger.debug("Attach stream closed, session_id: %s", self._session_id) except Exception as e: logger.debug("Attach stream error: %s, session_id: %s", e, self._session_id) - self._invalidate() + self._close_session(invalidate=True) def delete(self, settings: Optional[BaseRequestSettings] = None) -> None: """Deletes a Session of Query Service on server side and releases resources. @@ -372,7 +378,7 @@ class QuerySession(BaseQuerySession["SyncDriver"]): except Exception: pass - self._invalidate() + self._close_session() def create(self, settings: Optional[BaseRequestSettings] = None) -> "QuerySession": """Creates a Session of Query Service on server side and attaches it. diff --git a/contrib/python/ydb/py3/ydb/ydb_version.py b/contrib/python/ydb/py3/ydb/ydb_version.py index 7804556fba4..a01510bfcb2 100644 --- a/contrib/python/ydb/py3/ydb/ydb_version.py +++ b/contrib/python/ydb/py3/ydb/ydb_version.py @@ -1 +1 @@ -VERSION = "3.28.2" +VERSION = "3.28.3" |
