Skip to content

Commit 11d92d7

Browse files
AbQaadircopybara-github
authored andcommitted
fix: update session last_update_time on Vertex AI append_event
Merge #7404 Fixes #7338 PiperOrigin-RevId: 994046392
1 parent 650394f commit 11d92d7

2 files changed

Lines changed: 65 additions & 0 deletions

File tree

‎src/google/adk/sessions/vertex_ai_session_service.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ async def _do_append(cfg: dict[str, Any]) -> None:
543543
await _do_append(config)
544544

545545
if not event.partial:
546+
session.last_update_time = event.timestamp
546547
self._commit_event_to_session(session, event)
547548
return event
548549

‎tests/unittests/sessions/test_vertex_ai_session_service.py‎

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,6 +1197,70 @@ async def test_append_event():
11971197
assert retrieved_session.events[1] == event_to_append
11981198

11991199

1200+
@pytest.mark.asyncio
1201+
@pytest.mark.usefixtures('mock_get_api_client')
1202+
async def test_append_event_updates_session_last_update_time() -> None:
1203+
"""Appending an event updates session.last_update_time to event.timestamp."""
1204+
session_service = mock_vertex_ai_session_service()
1205+
session = await session_service.create_session(
1206+
app_name='123', user_id='user', session_id='test_update_time_session'
1207+
)
1208+
original_update_time = session.last_update_time
1209+
1210+
event_timestamp = original_update_time + 10.0
1211+
event = Event(
1212+
invocation_id='invocation',
1213+
author='user',
1214+
timestamp=event_timestamp,
1215+
)
1216+
await session_service.append_event(session=session, event=event)
1217+
1218+
assert session.last_update_time == pytest.approx(event_timestamp, abs=1e-6)
1219+
1220+
1221+
@pytest.mark.asyncio
1222+
@pytest.mark.usefixtures('mock_get_api_client')
1223+
async def test_append_event_partial_does_not_update_session_last_update_time():
1224+
"""Partial events do not update session.last_update_time or persist."""
1225+
session_service = mock_vertex_ai_session_service()
1226+
session = await session_service.create_session(
1227+
app_name='123', user_id='user', session_id='test_partial_session'
1228+
)
1229+
original_update_time = session.last_update_time
1230+
1231+
event = Event(
1232+
invocation_id='invocation',
1233+
author='user',
1234+
timestamp=original_update_time + 10.0,
1235+
partial=True,
1236+
)
1237+
await session_service.append_event(session=session, event=event)
1238+
1239+
assert session.last_update_time == original_update_time
1240+
assert len(session.events) == 0
1241+
1242+
1243+
@pytest.mark.asyncio
1244+
@pytest.mark.usefixtures('mock_get_api_client')
1245+
async def test_append_multiple_events_advances_last_update_time() -> None:
1246+
"""Multiple sequential appends advance session.last_update_time each time."""
1247+
session_service = mock_vertex_ai_session_service()
1248+
session = await session_service.create_session(
1249+
app_name='123', user_id='user', session_id='test_multi_update_session'
1250+
)
1251+
original_update_time = session.last_update_time
1252+
1253+
t1 = original_update_time + 10.0
1254+
event1 = Event(invocation_id='inv1', author='user', timestamp=t1)
1255+
await session_service.append_event(session=session, event=event1)
1256+
assert session.last_update_time == pytest.approx(t1, abs=1e-6)
1257+
1258+
t2 = original_update_time + 20.0
1259+
event2 = Event(invocation_id='inv2', author='model', timestamp=t2)
1260+
await session_service.append_event(session=session, event=event2)
1261+
assert session.last_update_time == pytest.approx(t2, abs=1e-6)
1262+
1263+
12001264
@pytest.mark.asyncio
12011265
async def test_append_event_does_not_mutate_session_on_remote_failure() -> None:
12021266
"""A failed remote append must not mutate the session.

0 commit comments

Comments
 (0)