From d83ee1a6f20a52df9c30aacf9fd0e5013d98f32d Mon Sep 17 00:00:00 2001 From: Shangjie Chen Date: Wed, 28 May 2025 12:45:41 -0700 Subject: [PATCH] fix: Remove excessive db call to update state table. PiperOrigin-RevId: 764375522 --- .../adk/sessions/database_session_service.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/google/adk/sessions/database_session_service.py b/src/google/adk/sessions/database_session_service.py index be1bb21..34ced22 100644 --- a/src/google/adk/sessions/database_session_service.py +++ b/src/google/adk/sessions/database_session_service.py @@ -11,6 +11,8 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations + import copy from datetime import datetime import json @@ -512,15 +514,16 @@ class DatabaseSessionService(BaseSessionService): _extract_state_delta(event.actions.state_delta) ) - # Merge state - app_state.update(app_state_delta) - user_state.update(user_state_delta) - session_state.update(session_state_delta) - - # Update storage - storage_app_state.state = app_state - storage_user_state.state = user_state - storage_session.state = session_state + # Merge state and update storage + if app_state_delta: + app_state.update(app_state_delta) + storage_app_state.state = app_state + if user_state_delta: + user_state.update(user_state_delta) + storage_user_state.state = user_state + if session_state_delta: + session_state.update(session_state_delta) + storage_session.state = session_state storage_event = StorageEvent( id=event.id,