File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree 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