{"record":{"id":"0ea10a4bbe0198b7","repo":"docling-project/docling","slug":"pipeline-name-does-not-support-threadeddoclingpa","errorCode":null,"errorMessage":"{pipeline_name} does not support ThreadedDoclingParseDocumentBackend yet. It still requires ordered/random page access via load_page() and cannot consume iterator-only or out-of-order page delivery. Use StandardPdfPipeline instead.","messagePattern":"(.+?) does not support ThreadedDoclingParseDocumentBackend yet\\. It still requires ordered/random page access via load_page\\(\\) and cannot consume iterator-only or out-of-order page delivery\\. Use StandardPdfPipeline instead\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"docling/experimental/pipeline/threaded_layout_vlm_pipeline.py","lineNumber":66,"sourceCode":"from docling.models.vlm_pipeline_models.mlx_model import HuggingFaceMlxModel\nfrom docling.pipeline.base_pipeline import BasePipeline\nfrom docling.pipeline.standard_pdf_pipeline import (\n    ProcessingResult,\n    RunContext,\n    ThreadedItem,\n    ThreadedPipelineStage,\n    ThreadedQueue,\n)\nfrom docling.utils.profiling import ProfilingScope, TimeRecorder\n\n_log = logging.getLogger(__name__)\n\n\ndef _raise_if_unsupported_threaded_backend(\n    backend: AbstractDocumentBackend, pipeline_name: str\n) -> None:\n    if isinstance(backend, ThreadedDoclingParseDocumentBackend):\n        raise RuntimeError(\n            f\"{pipeline_name} does not support ThreadedDoclingParseDocumentBackend yet. \"\n            \"It still requires ordered/random page access via load_page() and cannot \"\n            \"consume iterator-only or out-of-order page delivery. Use StandardPdfPipeline instead.\"\n        )\n\n\nclass ThreadedLayoutVlmPipeline(BasePipeline):\n    \"\"\"Two-stage threaded pipeline: Layout Model → VLM Model.\"\"\"\n\n    def __init__(self, pipeline_options: ThreadedLayoutVlmPipelineOptions) -> None:\n        super().__init__(pipeline_options)\n        self.pipeline_options: ThreadedLayoutVlmPipelineOptions = pipeline_options\n        self._run_seq = itertools.count(1)  # deterministic, monotonic run ids\n\n        # VLM model type (initialized in _init_models)\n        self.vlm_model: BaseVlmPageModel\n\n        # Initialize models","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/docling-project/docling/blob/61d76f1ff3f8428065465889f7b4577da7df704c/docling/experimental/pipeline/threaded_layout_vlm_pipeline.py#L48-L84","documentation":"RuntimeError from _raise_if_unsupported_threaded_backend: the experimental threaded layout/VLM pipelines cannot yet consume the iterator-only, out-of-order page delivery of ThreadedDoclingParseDocumentBackend; they require ordered/random page access via load_page(), which only the standard parsing backends provide.","triggerScenarios":"Constructing ThreadedLayoutVlmPipeline (or any pipeline calling this guard) with a ThreadedDoclingParseDocumentBackend passed as the document backend.","commonSituations":"Mixing experimental components: enabling the threaded docling-parse backend for speed while also trying the threaded VLM pipeline; migrating a config that worked with StandardPdfPipeline.","solutions":["Use StandardPdfPipeline when you need ThreadedDoclingParseDocumentBackend.","Or keep ThreadedLayoutVlmPipeline but give it a conventional backend (e.g. PyPdfiumDocumentBackend) that supports load_page().","Track upstream: the restriction is expected to be lifted when the pipeline supports streamed page delivery."],"exampleFix":"# before\npipeline = ThreadedLayoutVlmPipeline(\n    opts, backend=ThreadedDoclingParseDocumentBackend(...)  # RuntimeError\n)\n\n# after\nfrom docling.backend.pypdfium2_backend import PyPdfiumDocumentBackend\npipeline = ThreadedLayoutVlmPipeline(opts, backend=PyPdfiumDocumentBackend)\n# or switch the whole conversion to StandardPdfPipeline","handlingStrategy":"type-guard","validationCode":"from docling.backend.threaded_docling_parse_backend import ThreadedDoclingParseDocumentBackend\nassert not isinstance(backend, ThreadedDoclingParseDocumentBackend), 'use StandardPdfPipeline for this backend'","typeGuard":"def backend_supports_threaded_pipeline(backend) -> bool:\n    return not isinstance(backend, ThreadedDoclingParseDocumentBackend)","tryCatchPattern":"try:\n    pipeline = ThreadedLayoutVlmPipeline(opts, backend=backend)\nexcept RuntimeError as e:\n    if 'ThreadedDoclingParseDocumentBackend' in str(e):\n        pipeline = None  # fall back to StandardPdfPipeline configuration","preventionTips":["Check backend/pipeline compatibility matrix before mixing experimental components.","Prefer StandardPdfPipeline when the threaded parse backend is required."],"tags":["vlm","backend","threading","experimental"],"backgroundTag":null,"analyzedSha":"61d76f1ff3f8428065465889f7b4577da7df704c","analyzedAt":"2026-08-14T23:53:18.727Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}