@@ -534,12 +534,14 @@ async def append_event(self, session: Session, event: Event) -> Event:
534534
535535 # Pre-analyze which state scopes have deltas so we only acquire
536536 # FOR UPDATE locks on rows that will actually be written.
537- has_app_delta = False
538- has_user_delta = False
537+ # The result is reused later to avoid calling extract_state_delta twice.
538+ state_deltas = None
539539 if event .actions and event .actions .state_delta :
540- pre_deltas = _session_util .extract_state_delta (event .actions .state_delta )
541- has_app_delta = bool (pre_deltas .get ("app" ))
542- has_user_delta = bool (pre_deltas .get ("user" ))
540+ state_deltas = _session_util .extract_state_delta (
541+ event .actions .state_delta
542+ )
543+ has_app_delta = bool (state_deltas and state_deltas .get ("app" ))
544+ has_user_delta = bool (state_deltas and state_deltas .get ("user" ))
543545
544546 async with self ._with_session_lock (
545547 app_name = session .app_name ,
@@ -609,11 +611,8 @@ async def append_event(self, session: Session, event: Event) -> Event:
609611 storage_events = [e async for e in result ]
610612 session .events = [e .to_event () for e in storage_events ]
611613
612- # Extract state delta
613- if event .actions and event .actions .state_delta :
614- state_deltas = _session_util .extract_state_delta (
615- event .actions .state_delta
616- )
614+ # Apply state deltas (reusing pre-analyzed result from above)
615+ if state_deltas :
617616 app_state_delta = state_deltas ["app" ]
618617 user_state_delta = state_deltas ["user" ]
619618 session_state_delta = state_deltas ["session" ]
0 commit comments