Skip to content

Commit a504199

Browse files
google-genai-botcopybara-github
authored andcommitted
fix: Process ListEvents response correctly when getSession is called
When get session is being called on a session with more than 1 page of events (100+), the response of the subsequent listevents calls fails due to missing parsing logic. This change fixes the processing of the listevents responses. PiperOrigin-RevId: 783166959
1 parent 498ce90 commit a504199

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

src/google/adk/sessions/vertex_ai_session_service.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -216,29 +216,36 @@ async def get_session(
216216
path=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}/events',
217217
request_dict={},
218218
)
219-
list_events_api_response = _convert_api_response(list_events_api_response)
219+
converted_api_response = _convert_api_response(list_events_api_response)
220220

221-
# Handles empty response case
222-
if not list_events_api_response or list_events_api_response.get(
221+
# Handles empty response case where there are no events to fetch
222+
if not converted_api_response or converted_api_response.get(
223223
'httpHeaders', None
224224
):
225225
return session
226226

227227
session.events += [
228228
_from_api_event(event)
229-
for event in list_events_api_response['sessionEvents']
229+
for event in converted_api_response['sessionEvents']
230230
]
231231

232-
while list_events_api_response.get('nextPageToken', None):
233-
page_token = list_events_api_response.get('nextPageToken', None)
232+
while converted_api_response.get('nextPageToken', None):
233+
page_token = converted_api_response.get('nextPageToken', None)
234234
list_events_api_response = await api_client.async_request(
235235
http_method='GET',
236236
path=f'reasoningEngines/{reasoning_engine_id}/sessions/{session_id}/events?pageToken={page_token}',
237237
request_dict={},
238238
)
239+
converted_api_response = _convert_api_response(list_events_api_response)
240+
241+
# Handles empty response case where there are no more events to fetch
242+
if not converted_api_response or converted_api_response.get(
243+
'httpHeaders', None
244+
):
245+
break
239246
session.events += [
240247
_from_api_event(event)
241-
for event in list_events_api_response['sessionEvents']
248+
for event in converted_api_response['sessionEvents']
242249
]
243250

244251
session.events = [

tests/unittests/sessions/test_vertex_ai_session_service.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,13 @@ async def async_request(
201201
if match:
202202
session_id = match.group(2)
203203
if match.group(3):
204-
return {'sessionEvents': MOCK_EVENT_JSON_3}
204+
page_token = match.group(3)
205+
if page_token == 'my_token':
206+
response = {'sessionEvents': MOCK_EVENT_JSON_3}
207+
response['nextPageToken'] = 'my_token2'
208+
return response
209+
else:
210+
return {}
205211
events_tuple = self.event_dict.get(session_id, ([], None))
206212
response = {'sessionEvents': events_tuple[0]}
207213
if events_tuple[1]:

0 commit comments

Comments
 (0)