diff --git a/nextcloud_mcp_server/document_processors/escalation.py b/nextcloud_mcp_server/document_processors/escalation.py index 67af6c0a..75ca4e72 100644 --- a/nextcloud_mcp_server/document_processors/escalation.py +++ b/nextcloud_mcp_server/document_processors/escalation.py @@ -45,6 +45,13 @@ def escalation_tiers_signature(settings: Any) -> str: pin (``document_tier1_engine``). Enabling OCR changes the signature, so the pathological-but-OCR-recoverable documents dead-lettered while OCR was off are re-attempted automatically. + + TODO: when a future setting can make a previously-terminal document parseable, + fold it in here so raising it auto-retries existing dead-letters. Two known + candidates: a new escalation tier becoming toggleable (e.g. the reserved + ``llm`` rung in ``TIER_LADDER``), and a raised oversize cap (an oversize PDF is + always-terminal, so without the cap in this signature it stays dead-lettered + until its etag changes even after an operator allows bigger files). """ return ( f"ocr={int(bool(settings.document_ocr_enabled))};" diff --git a/nextcloud_mcp_server/vector/processor.py b/nextcloud_mcp_server/vector/processor.py index c6f90526..4c3f4076 100644 --- a/nextcloud_mcp_server/vector/processor.py +++ b/nextcloud_mcp_server/vector/processor.py @@ -1108,7 +1108,11 @@ async def _index_document( user_id=doc_task.user_id, ) except Exception: - logger.debug( + # A real Qdrant I/O failure (not control-flow): warn so + # it's observable. Non-fatal -- the durable dead-letter + # marker is already written, so the leftover volatile + # placeholder is merely redundant. + logger.warning( "Could not delete placeholder for dead-lettered %s", doc_task.doc_id, exc_info=True,