mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-24 16:54:43 +00:00
fix(openviking): stop pending runtime start on shutdown
This commit is contained in:
parent
c4d0f1c1d6
commit
cf0bd5dd4c
2 changed files with 44 additions and 1 deletions
|
|
@ -2201,7 +2201,8 @@ class OpenVikingMemoryProvider(MemoryProvider):
|
|||
should_start_waiter = False
|
||||
with self._runtime_start_lock:
|
||||
if (
|
||||
self._runtime_start_pending
|
||||
self._shutting_down
|
||||
or self._runtime_start_pending
|
||||
or (self._runtime_start_thread and self._runtime_start_thread.is_alive())
|
||||
):
|
||||
self._client = None
|
||||
|
|
@ -2234,6 +2235,8 @@ class OpenVikingMemoryProvider(MemoryProvider):
|
|||
if should_start_waiter:
|
||||
with self._runtime_start_lock:
|
||||
self._runtime_start_pending = False
|
||||
if self._shutting_down:
|
||||
return
|
||||
self._start_runtime_openviking_waiter(
|
||||
status_callback=status_callback,
|
||||
warning_callback=warning_callback,
|
||||
|
|
|
|||
|
|
@ -68,3 +68,43 @@ def test_shutdown_waits_for_runtime_start_thread():
|
|||
|
||||
assert finished.is_set()
|
||||
assert not t.is_alive()
|
||||
|
||||
|
||||
def test_shutdown_during_pending_runtime_start_does_not_launch_waiter(monkeypatch):
|
||||
"""A waiter reserved before shutdown must not start after shutdown returns."""
|
||||
provider = OpenVikingMemoryProvider()
|
||||
provider._endpoint = "http://127.0.0.1:1934"
|
||||
status_entered = threading.Event()
|
||||
release_status = threading.Event()
|
||||
waiter_calls = []
|
||||
|
||||
monkeypatch.setattr(
|
||||
openviking_module,
|
||||
"_start_local_openviking_server",
|
||||
lambda endpoint: (True, "started"),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
provider,
|
||||
"_start_runtime_openviking_waiter",
|
||||
lambda **kwargs: waiter_calls.append(kwargs),
|
||||
)
|
||||
|
||||
def status_callback(_message):
|
||||
status_entered.set()
|
||||
assert release_status.wait(2.0)
|
||||
|
||||
starter = threading.Thread(
|
||||
target=provider._handle_runtime_openviking_unreachable,
|
||||
kwargs={"status_callback": status_callback},
|
||||
name="openviking-pending-start",
|
||||
)
|
||||
starter.start()
|
||||
assert status_entered.wait(2.0)
|
||||
|
||||
provider.shutdown()
|
||||
release_status.set()
|
||||
starter.join(timeout=2.0)
|
||||
|
||||
assert not starter.is_alive()
|
||||
assert provider._runtime_start_pending is False
|
||||
assert waiter_calls == []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue