Skip to content

Commit 75231a3

Browse files
wuliang229copybara-github
authored andcommitted
fix: Handle NOT_FOUND error when fetching Vertex AI sessions
Co-authored-by: Liang Wu <wuliang@google.com> PiperOrigin-RevId: 855464349
1 parent b725045 commit 75231a3

File tree

2 files changed

+43
-7
lines changed

2 files changed

+43
-7
lines changed

src/google/adk/sessions/vertex_ai_session_service.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from typing import Union
2525

2626
from google.genai import types
27+
from google.genai.errors import ClientError
2728
from typing_extensions import override
2829

2930
if 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}.'

tests/unittests/sessions/test_vertex_ai_session_service.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from google.adk.sessions.vertex_ai_session_service import VertexAiSessionService
3333
from google.api_core import exceptions as api_core_exceptions
3434
from google.genai import types as genai_types
35+
from google.genai.errors import ClientError
3536
import pytest
3637

3738
MOCK_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'])

0 commit comments

Comments
 (0)