File tree Expand file tree Collapse file tree 2 files changed +43
-7
lines changed
Expand file tree Collapse file tree 2 files changed +43
-7
lines changed Original file line number Diff line number Diff line change 2424from typing import Union
2525
2626from google .genai import types
27+ from google .genai .errors import ClientError
2728from typing_extensions import override
2829
2930if TYPE_CHECKING :
@@ -155,13 +156,22 @@ async def get_session(
155156 )
156157 }
157158
158- get_session_response , events_iterator = await asyncio .gather (
159- api_client .agent_engines .sessions .get (name = session_resource_name ),
160- api_client .agent_engines .sessions .events .list (
161- name = session_resource_name ,
162- ** list_events_kwargs ,
163- ),
164- )
159+ try :
160+ get_session_response , events_iterator = await asyncio .gather (
161+ api_client .agent_engines .sessions .get (name = session_resource_name ),
162+ api_client .agent_engines .sessions .events .list (
163+ name = session_resource_name ,
164+ ** list_events_kwargs ,
165+ ),
166+ )
167+ except ClientError as e :
168+ if e .code == 404 :
169+ logger .debug (
170+ 'Session %s not found in Vertex AI Agent Engine.' ,
171+ session_resource_name ,
172+ )
173+ return None
174+ raise
165175 if get_session_response .user_id != user_id :
166176 raise ValueError (
167177 f'Session { session_id } does not belong to user { user_id } .'
Original file line number Diff line number Diff line change 3232from google .adk .sessions .vertex_ai_session_service import VertexAiSessionService
3333from google .api_core import exceptions as api_core_exceptions
3434from google .genai import types as genai_types
35+ from google .genai .errors import ClientError
3536import pytest
3637
3738MOCK_SESSION_JSON_1 = {
@@ -552,6 +553,31 @@ async def test_initialize_with_project_location_and_api_key_error():
552553 )
553554
554555
556+ @pytest .mark .asyncio
557+ @pytest .mark .usefixtures ('mock_get_api_client' )
558+ async def test_get_session_returns_none_when_invalid_argument (
559+ mock_api_client_instance ,
560+ ):
561+ session_service = mock_vertex_ai_session_service ()
562+ # Simulate the API raising a session not found exception.
563+ mock_api_client_instance .agent_engines .sessions .get .side_effect = ClientError (
564+ code = 404 ,
565+ response_json = {
566+ 'message' : (
567+ 'Session (projectNumber: 123, reasoningEngineId: 123, sessionId:'
568+ ' 123) not found.'
569+ )
570+ },
571+ response = None ,
572+ )
573+
574+ session = await session_service .get_session (
575+ app_name = '123' , user_id = 'user' , session_id = 'missing'
576+ )
577+
578+ assert session is None
579+
580+
555581@pytest .mark .asyncio
556582@pytest .mark .usefixtures ('mock_get_api_client' )
557583@pytest .mark .parametrize ('agent_engine_id' , [None , '123' ])
You can’t perform that action at this time.
0 commit comments