From 74d9866383e33bf00325f9b39d140e61eaf77456 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Mar 2026 02:57:47 +0000 Subject: [PATCH 1/2] Initial plan From 03a7caa97c6a0252bef76b0a57e149e6da89e5bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 2 Mar 2026 03:22:51 +0000 Subject: [PATCH 2/2] Fix shutdown hang: wake session processor thread on stop() and mark daemon Co-authored-by: lstein <111189+lstein@users.noreply.github.com> --- .../services/session_processor/session_processor_default.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/invokeai/app/services/session_processor/session_processor_default.py b/invokeai/app/services/session_processor/session_processor_default.py index 6c320eabda5..6eee3495808 100644 --- a/invokeai/app/services/session_processor/session_processor_default.py +++ b/invokeai/app/services/session_processor/session_processor_default.py @@ -355,6 +355,7 @@ def start(self, invoker: Invoker) -> None: self._thread = Thread( name="session_processor", target=self._process, + daemon=True, kwargs={ "stop_event": self._stop_event, "poll_now_event": self._poll_now_event, @@ -366,6 +367,9 @@ def start(self, invoker: Invoker) -> None: def stop(self, *args, **kwargs) -> None: self._stop_event.set() + # Wake the thread if it is sleeping in poll_now_event.wait() or blocked in resume_event.wait() (paused). + self._poll_now_event.set() + self._resume_event.set() def _poll_now(self) -> None: self._poll_now_event.set()