mirror of
https://github.com/VectifyAI/PageIndex.git
synced 2026-07-18 21:21:05 +02:00
fix: resolve five P1 defects from the SDK review
- AgentRunner.run: offload to a worker-thread event loop when called from inside a running loop (Jupyter, FastAPI handlers) — mirrors pipeline._run_async; Runner.run_sync raised RuntimeError there. - SQLiteStorage: create connections with check_same_thread=False so close() can actually close connections created by worker threads. Each thread still gets its own connection via threading.local; with the default True those closes raised ProgrammingError (silently swallowed) and leaked every worker connection. - CloudBackend.query: non-streaming chat completions now use a 300s timeout and a single attempt. The default 30s ReadTimeout fired before generation finished and the retry loop re-billed the full server-side retrieval + generation up to three times. _request gains retries/timeout overrides; the exhausted-retry path also no longer sleeps before raising. - MarkdownParser: content before the first heading (abstract/preamble) becomes a node instead of being silently dropped and unretrievable; a file with no headings at all yields a single document node instead of zero nodes (which pushed an empty page list into the pipeline). - LegacyCloudAPI.is_retrieval_ready: API failures (revoked key, network down) now propagate as PageIndexAPIError instead of reading as "not ready", which turned polling loops into infinite loops. Adds regression tests for each fix. Claude-Session: https://claude.ai/code/session_01Kx5DgKbhK1N8autqXH8SmS
This commit is contained in:
parent
6a73279c0c
commit
956147d864
10 changed files with 171 additions and 16 deletions
|
|
@ -85,11 +85,15 @@ class LegacyCloudAPI:
|
|||
return response.json()
|
||||
|
||||
def is_retrieval_ready(self, doc_id: str) -> bool:
|
||||
try:
|
||||
result = self.get_tree(doc_id)
|
||||
return result.get("retrieval_ready", False)
|
||||
except PageIndexAPIError:
|
||||
return False
|
||||
"""Return whether retrieval is ready for ``doc_id``.
|
||||
|
||||
API failures (revoked key, network down, unknown doc) propagate as
|
||||
PageIndexAPIError instead of reading as "not ready" — swallowing them
|
||||
turned ``while not is_retrieval_ready(...)`` polling loops into
|
||||
infinite loops.
|
||||
"""
|
||||
result = self.get_tree(doc_id)
|
||||
return result.get("retrieval_ready", False)
|
||||
|
||||
def submit_query(self, doc_id: str, query: str, thinking: bool = False) -> dict[str, Any]:
|
||||
payload = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue