Skip to content

ingest_paperless: 300s-MCP-Idle-Timeout killt laufenden Ingest → halber State, leerer Index #1

Description

@markus7h

Problem

ingest_paperless läuft synchron innerhalb des MCP-Requests. Bei größeren Beständen dauert rag.ainsert(...) (Chunking → Entity/Relation-Extraktion → Embedding) deutlich länger als der MCP-Idle-Timeout von 300 s. Der Client bricht ab (sent no response or progress for 300s; aborting), und der Abbruch cancelt die serverseitige Coroutine mitten in ainsert.

Folge:

  • kv_store_doc_status.json bleibt mit In-flight-Status (processing/analyzing/parsing) eingefroren, die nie fertig werden.
  • Keine Graph-/Vektor-Artefakte (graphml, vdb_*) → Index leer.
  • _save_manifest (server.py:283) wird nie erreicht.
  • Folge-Queries liefern [no-context] (Raw search results: 0 entities, 0 relations, 0 vector chunks).

Reproduktion

ingest_paperless(project="doc-graph", tag="doc-graph") über 48 Dokumente → MCP-Abort nach 300 s, Index bleibt leer.

Workaround

Ingest entkoppelt im Container starten (docker exec -d ... python -c 'asyncio.run(ingest_paperless.fn(...))'), unabhängig von der MCP-Verbindung.

Fix-Vorschlag

Ingest als Hintergrund-Job (asyncio.create_task, nicht an den Request gebunden), sofort mit Job-Handle antworten; zusätzliches ingest_status(project)-Tool zum Pollen. Alternativ MCP-Progress-Notifications senden, damit die Verbindung nicht idle-abbricht.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions