From 12269700013e97f9e88e1fdb1f5c63e2dee5c08e Mon Sep 17 00:00:00 2001 From: kshitij <82637225+kshitijk4poor@users.noreply.github.com> Date: Thu, 13 Aug 2026 22:32:34 +0530 Subject: [PATCH] fix: track and join honcho-memwrite thread in shutdown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit on_memory_write spawns a fire-and-forget daemon thread that was never stored on self, so shutdown() couldn't join it — the exact problem the PR fixes for the async writer thread. Store as self._memwrite_thread and include it in the shutdown join loop. Review follow-up for salvaged PR #83500. --- plugins/memory/honcho/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/memory/honcho/__init__.py b/plugins/memory/honcho/__init__.py index dde0108c9f51d..1347014cea72a 100644 --- a/plugins/memory/honcho/__init__.py +++ b/plugins/memory/honcho/__init__.py @@ -1496,8 +1496,8 @@ class HonchoMemoryProvider(MemoryProvider): except Exception as e: logger.debug("Honcho memory mirror failed: %s", e) - t = spawn_context_thread(_write, name="honcho-memwrite") - t.start() + self._memwrite_thread = spawn_context_thread(_write, name="honcho-memwrite") + self._memwrite_thread.start() def on_session_end(self, messages: List[Dict[str, Any]]) -> None: """Flush all pending messages to Honcho on session end.""" @@ -1672,7 +1672,7 @@ class HonchoMemoryProvider(MemoryProvider): return tool_error(f"Honcho {tool_name} failed: {e}") def shutdown(self) -> None: - for t in (self._prefetch_thread, self._sync_thread): + for t in (self._prefetch_thread, self._sync_thread, getattr(self, "_memwrite_thread", None)): if t and t.is_alive(): t.join(timeout=5.0) manager = self._manager