fix(hindsight): use configured timeout in _run_sync for all async operations
The previous commit added HINDSIGHT_TIMEOUT as a configurable env var, but _run_sync still used the hardcoded _DEFAULT_TIMEOUT (120s). All async operations (recall, retain, reflect, aclose) now go through an instance method that uses self._timeout, so the configured value is actually applied. Also: added backward-compatible alias comment for the module-level function.
This commit is contained in:
@@ -109,6 +109,11 @@ def _run_sync(coro, timeout: float = _DEFAULT_TIMEOUT):
|
|||||||
return future.result(timeout=timeout)
|
return future.result(timeout=timeout)
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Backward-compatible alias — instances use self._run_sync() instead.
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Tool schemas
|
# Tool schemas
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -668,6 +673,10 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
self._client = Hindsight(**kwargs)
|
self._client = Hindsight(**kwargs)
|
||||||
return self._client
|
return self._client
|
||||||
|
|
||||||
|
def _run_sync(self, coro):
|
||||||
|
"""Schedule *coro* on the shared loop using the configured timeout."""
|
||||||
|
return _run_sync(coro, timeout=self._timeout)
|
||||||
|
|
||||||
def initialize(self, session_id: str, **kwargs) -> None:
|
def initialize(self, session_id: str, **kwargs) -> None:
|
||||||
self._session_id = str(session_id or "").strip()
|
self._session_id = str(session_id or "").strip()
|
||||||
|
|
||||||
@@ -892,7 +901,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
client = self._get_client()
|
client = self._get_client()
|
||||||
if self._prefetch_method == "reflect":
|
if self._prefetch_method == "reflect":
|
||||||
logger.debug("Prefetch: calling reflect (bank=%s, query_len=%d)", self._bank_id, len(query))
|
logger.debug("Prefetch: calling reflect (bank=%s, query_len=%d)", self._bank_id, len(query))
|
||||||
resp = _run_sync(client.areflect(bank_id=self._bank_id, query=query, budget=self._budget))
|
resp = self._run_sync(client.areflect(bank_id=self._bank_id, query=query, budget=self._budget))
|
||||||
text = resp.text or ""
|
text = resp.text or ""
|
||||||
else:
|
else:
|
||||||
recall_kwargs: dict = {
|
recall_kwargs: dict = {
|
||||||
@@ -906,7 +915,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
recall_kwargs["types"] = self._recall_types
|
recall_kwargs["types"] = self._recall_types
|
||||||
logger.debug("Prefetch: calling recall (bank=%s, query_len=%d, budget=%s)",
|
logger.debug("Prefetch: calling recall (bank=%s, query_len=%d, budget=%s)",
|
||||||
self._bank_id, len(query), self._budget)
|
self._bank_id, len(query), self._budget)
|
||||||
resp = _run_sync(client.arecall(**recall_kwargs))
|
resp = self._run_sync(client.arecall(**recall_kwargs))
|
||||||
num_results = len(resp.results) if resp.results else 0
|
num_results = len(resp.results) if resp.results else 0
|
||||||
logger.debug("Prefetch: recall returned %d results", num_results)
|
logger.debug("Prefetch: recall returned %d results", num_results)
|
||||||
text = "\n".join(f"- {r.text}" for r in resp.results if r.text) if resp.results else ""
|
text = "\n".join(f"- {r.text}" for r in resp.results if r.text) if resp.results else ""
|
||||||
@@ -1032,7 +1041,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
item.pop("retain_async", None)
|
item.pop("retain_async", None)
|
||||||
logger.debug("Hindsight retain: bank=%s, doc=%s, async=%s, content_len=%d, num_turns=%d",
|
logger.debug("Hindsight retain: bank=%s, doc=%s, async=%s, content_len=%d, num_turns=%d",
|
||||||
self._bank_id, self._session_id, self._retain_async, len(content), len(self._session_turns))
|
self._bank_id, self._session_id, self._retain_async, len(content), len(self._session_turns))
|
||||||
_run_sync(client.aretain_batch(
|
self._run_sync(client.aretain_batch(
|
||||||
bank_id=self._bank_id,
|
bank_id=self._bank_id,
|
||||||
items=[item],
|
items=[item],
|
||||||
document_id=self._session_id,
|
document_id=self._session_id,
|
||||||
@@ -1072,7 +1081,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
)
|
)
|
||||||
logger.debug("Tool hindsight_retain: bank=%s, content_len=%d, context=%s",
|
logger.debug("Tool hindsight_retain: bank=%s, content_len=%d, context=%s",
|
||||||
self._bank_id, len(content), context)
|
self._bank_id, len(content), context)
|
||||||
_run_sync(client.aretain(**retain_kwargs))
|
self._run_sync(client.aretain(**retain_kwargs))
|
||||||
logger.debug("Tool hindsight_retain: success")
|
logger.debug("Tool hindsight_retain: success")
|
||||||
return json.dumps({"result": "Memory stored successfully."})
|
return json.dumps({"result": "Memory stored successfully."})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -1095,7 +1104,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
recall_kwargs["types"] = self._recall_types
|
recall_kwargs["types"] = self._recall_types
|
||||||
logger.debug("Tool hindsight_recall: bank=%s, query_len=%d, budget=%s",
|
logger.debug("Tool hindsight_recall: bank=%s, query_len=%d, budget=%s",
|
||||||
self._bank_id, len(query), self._budget)
|
self._bank_id, len(query), self._budget)
|
||||||
resp = _run_sync(client.arecall(**recall_kwargs))
|
resp = self._run_sync(client.arecall(**recall_kwargs))
|
||||||
num_results = len(resp.results) if resp.results else 0
|
num_results = len(resp.results) if resp.results else 0
|
||||||
logger.debug("Tool hindsight_recall: %d results", num_results)
|
logger.debug("Tool hindsight_recall: %d results", num_results)
|
||||||
if not resp.results:
|
if not resp.results:
|
||||||
@@ -1113,7 +1122,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
try:
|
try:
|
||||||
logger.debug("Tool hindsight_reflect: bank=%s, query_len=%d, budget=%s",
|
logger.debug("Tool hindsight_reflect: bank=%s, query_len=%d, budget=%s",
|
||||||
self._bank_id, len(query), self._budget)
|
self._bank_id, len(query), self._budget)
|
||||||
resp = _run_sync(client.areflect(
|
resp = self._run_sync(client.areflect(
|
||||||
bank_id=self._bank_id, query=query, budget=self._budget
|
bank_id=self._bank_id, query=query, budget=self._budget
|
||||||
))
|
))
|
||||||
logger.debug("Tool hindsight_reflect: response_len=%d", len(resp.text or ""))
|
logger.debug("Tool hindsight_reflect: response_len=%d", len(resp.text or ""))
|
||||||
@@ -1140,7 +1149,7 @@ class HindsightMemoryProvider(MemoryProvider):
|
|||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
_run_sync(self._client.aclose())
|
self._run_sync(self._client.aclose())
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
self._client = None
|
self._client = None
|
||||||
|
|||||||
Reference in New Issue
Block a user