Skip to content

Commit f7c2a84

Browse files
Xuan Yangcopybara-github
authored andcommitted
fix: Treat database update time as UTC for session's last update time
PiperOrigin-RevId: 772614326
1 parent c04adaa commit f7c2a84

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/google/adk/sessions/database_session_service.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from __future__ import annotations
1515

1616
import copy
17-
from datetime import datetime
17+
from datetime import datetime, timezone
1818
import json
1919
import logging
2020
from typing import Any
@@ -144,6 +144,12 @@ class StorageSession(Base):
144144
def __repr__(self):
145145
return f"<StorageSession(id={self.id}, update_time={self.update_time})>"
146146

147+
def create_timestamp_utc(self) -> datetime:
148+
return self.create_time.replace(tzinfo=timezone.utc).timestamp()
149+
150+
def update_timestamp_utc(self) -> datetime:
151+
return self.update_time.replace(tzinfo=timezone.utc).timestamp()
152+
147153

148154
class StorageEvent(Base):
149155
"""Represents an event stored in the database."""
@@ -412,7 +418,7 @@ async def create_session(
412418
user_id=str(storage_session.user_id),
413419
id=str(storage_session.id),
414420
state=merged_state,
415-
last_update_time=storage_session.update_time.timestamp(),
421+
last_update_time=storage_session.update_timestamp_utc(),
416422
)
417423
return session
418424

@@ -473,7 +479,7 @@ async def get_session(
473479
user_id=user_id,
474480
id=session_id,
475481
state=merged_state,
476-
last_update_time=storage_session.update_time.timestamp(),
482+
last_update_time=storage_session.update_timestamp_utc(),
477483
)
478484
session.events = [e.to_event() for e in reversed(storage_events)]
479485
return session
@@ -496,7 +502,7 @@ async def list_sessions(
496502
user_id=user_id,
497503
id=storage_session.id,
498504
state={},
499-
last_update_time=storage_session.update_time.timestamp(),
505+
last_update_time=storage_session.update_timestamp_utc(),
500506
)
501507
sessions.append(session)
502508
return ListSessionsResponse(sessions=sessions)
@@ -529,7 +535,7 @@ async def append_event(self, session: Session, event: Event) -> Event:
529535
StorageSession, (session.app_name, session.user_id, session.id)
530536
)
531537

532-
if storage_session.update_time.timestamp() > session.last_update_time:
538+
if storage_session.update_timestamp_utc() > session.last_update_time:
533539
raise ValueError(
534540
"The last_update_time provided in the session object"
535541
f" {datetime.fromtimestamp(session.last_update_time):'%Y-%m-%d %H:%M:%S'} is"
@@ -577,7 +583,7 @@ async def append_event(self, session: Session, event: Event) -> Event:
577583
session_factory.refresh(storage_session)
578584

579585
# Update timestamp with commit time
580-
session.last_update_time = storage_session.update_time.timestamp()
586+
session.last_update_time = storage_session.update_timestamp_utc()
581587

582588
# Also update the in-memory session
583589
await super().append_event(session=session, event=event)

0 commit comments

Comments
 (0)