Coverage for src/qdrant_loader/cli/commands/ingest.py: 21%
29 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-20 10:15 +0000
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-20 10:15 +0000
1from __future__ import annotations
3import traceback
4from typing import Any
6from qdrant_loader.utils.logging import LoggingConfig
7from qdrant_loader.utils.sensitive import sanitize_exception_message
10async def run_pipeline_ingestion(
11 settings: Any,
12 qdrant_manager: Any,
13 *,
14 project: str | None,
15 source_type: str | None,
16 source: str | None,
17 force: bool,
18 resume: bool = True,
19 metrics_dir: str | None = None,
20) -> None:
21 from qdrant_loader.core.async_ingestion_pipeline import AsyncIngestionPipeline
23 pipeline = (
24 AsyncIngestionPipeline(settings, qdrant_manager, metrics_dir=metrics_dir)
25 if metrics_dir
26 else AsyncIngestionPipeline(settings, qdrant_manager)
27 )
28 logger = LoggingConfig.get_logger(__name__)
29 ingestion_error: Exception | None = None
30 try:
31 await pipeline.process_documents(
32 project_id=project,
33 source_type=source_type,
34 source=source,
35 force=force,
36 resume=resume,
37 )
38 except Exception as e:
39 ingestion_error = e
40 sanitized_traceback = sanitize_exception_message(traceback.format_exc())
41 logger.error(
42 "Ingestion failed",
43 error=sanitize_exception_message(e),
44 error_type=type(e).__name__,
45 sanitized_traceback=sanitized_traceback,
46 )
47 cleanup_error: Exception | None = None
48 try:
49 await pipeline.cleanup()
50 except Exception as e:
51 cleanup_error = e
52 sanitized_traceback = sanitize_exception_message(traceback.format_exc())
53 if ingestion_error is not None:
54 logger.error(
55 "Cleanup failed after ingestion exception",
56 error=sanitize_exception_message(e),
57 error_type=type(e).__name__,
58 sanitized_traceback=sanitized_traceback,
59 )
60 else:
61 logger.error(
62 "Cleanup failed after successful ingestion",
63 error=sanitize_exception_message(e),
64 error_type=type(e).__name__,
65 sanitized_traceback=sanitized_traceback,
66 )
67 if ingestion_error is not None:
68 raise ingestion_error
69 if cleanup_error is not None:
70 raise cleanup_error