From a61381ee7e4e10697fa0154142c6531d1033fdf4 Mon Sep 17 00:00:00 2001 From: Frank Song Date: Tue, 7 Jul 2026 13:08:27 +0800 Subject: [PATCH] fix(wakeup): key stale pause to failed lane --- api/streaming.py | 12 ++++++------ tests/test_issue3929_process_wakeup_pause.py | 6 ++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/api/streaming.py b/api/streaming.py index f7946784..4f1993f0 100644 --- a/api/streaming.py +++ b/api/streaming.py @@ -8738,8 +8738,8 @@ def _run_agent_streaming( record_process_wakeup_provider_unavailable_pause( s, classification=_err_type, - model=getattr(s, 'model', None) or resolved_model or model, - provider=getattr(s, 'model_provider', None) or resolved_provider, + model=resolved_model or model, + provider=resolved_provider or provider_context or model_provider, ) _materialize_pending_user_turn_before_error(s) s.active_stream_id = None @@ -9839,8 +9839,8 @@ def _run_agent_streaming( _pause = record_process_wakeup_provider_unavailable_pause( s, classification=_exc_type, - model=getattr(s, 'model', None) or resolved_model or model, - provider=getattr(s, 'model_provider', None) or resolved_provider, + model=resolved_model or model, + provider=resolved_provider or provider_context or model_provider, ) if _pause is not None: try: @@ -9864,8 +9864,8 @@ def _run_agent_streaming( record_process_wakeup_provider_unavailable_pause( s, classification=_exc_type, - model=getattr(s, 'model', None) or resolved_model or model, - provider=getattr(s, 'model_provider', None) or resolved_provider, + model=resolved_model or model, + provider=resolved_provider or provider_context or model_provider, ) _materialize_pending_user_turn_before_error(s) s.active_stream_id = None diff --git a/tests/test_issue3929_process_wakeup_pause.py b/tests/test_issue3929_process_wakeup_pause.py index 5d987e0f..3c2c8551 100644 --- a/tests/test_issue3929_process_wakeup_pause.py +++ b/tests/test_issue3929_process_wakeup_pause.py @@ -115,6 +115,8 @@ class _StaleCredentialPoolEmptyAgent(_MockAgent): def run_conversation(self, **_kwargs): session = models.SESSIONS[self.session_id] session.active_stream_id = "stream-newer-run" + session.model = "newer-model" + session.model_provider = "newer-provider" session.pending_user_source = "webui" session.save(touch_updated_at=False) raise RuntimeError("All 0 credential(s) exhausted for test-provider") @@ -297,9 +299,13 @@ def test_stale_credential_empty_process_wakeup_still_records_pause(tmp_path): saved = Session.load(session.session_id) assert saved is not None assert saved.active_stream_id == "stream-newer-run" + assert saved.model == "newer-model" + assert saved.model_provider == "newer-provider" assert saved.pending_user_source == "webui" assert saved.process_wakeup_pause["paused"] is True assert saved.process_wakeup_pause["classification"] == "credential_pool_empty" + assert saved.process_wakeup_pause["model"] == "test-model" + assert saved.process_wakeup_pause["provider"] == "test-provider" assert saved.process_wakeup_pause["suppressed_count"] == 0 assert not any(message.get("_error") for message in saved.messages)