{"record":{"id":"52151fcec300f8e6","repo":"opendataloader-project/opendataloader-pdf","slug":"docling-fast-server-processing-failed-s","errorCode":null,"errorMessage":"Docling Fast Server processing failed: %s","messagePattern":"Docling Fast Server processing failed: (.+?)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingFastServerClient.java","lineNumber":210,"sourceCode":"            throw new IOException(\"Docling Fast Server request failed with status \" + response.code() +\n                \": \" + bodyStr);\n        }\n\n        ResponseBody body = response.body();\n        if (body == null) {\n            throw new IOException(\"Empty response body\");\n        }\n\n        String responseStr = body.string();\n        JsonNode root = objectMapper.readTree(responseStr);\n\n        // Check for API error status\n        JsonNode statusNode = root.get(\"status\");\n        String status = statusNode != null ? statusNode.asText() : \"\";\n        if (\"failure\".equals(status)) {\n            JsonNode errorsNode = root.get(\"errors\");\n            String errorMessage = errorsNode != null ? errorsNode.toString() : \"Unknown error\";\n            throw new IOException(\"Docling Fast Server processing failed: \" + errorMessage);\n        }\n\n        // Log partial_success status\n        if (\"partial_success\".equals(status)) {\n            JsonNode errorsNode = root.get(\"errors\");\n            LOGGER.log(Level.WARNING, \"Backend returned partial_success: {0}\",\n                errorsNode != null ? errorsNode.toString() : \"no error details\");\n        }\n\n        // Extract document content\n        JsonNode documentNode = root.get(\"document\");\n        if (documentNode == null) {\n            throw new IOException(\"Invalid response: missing 'document' field\");\n        }\n\n        JsonNode jsonContent = documentNode.get(\"json_content\");\n\n        // Extract per-page content from json_content if available","sourceCodeStart":192,"sourceCodeEnd":228,"githubUrl":"https://github.com/opendataloader-project/opendataloader-pdf/blob/a7789b8e77dd05e2b8659eb3ea12fc458f80bfb8/java/opendataloader-pdf-core/src/main/java/org/opendataloader/pdf/hybrid/DoclingFastServerClient.java#L192-L228","documentation":"The response JSON contained \"status\":\"failure\", meaning the docling-fast-server accepted the PDF but the conversion pipeline itself reported failure. The errors node (if present) is stringified into the message so the caller sees which pages/steps failed. This is a backend processing failure, not a transport error.","triggerScenarios":"parseResponse reads root.get(\"status\").asText() == \"failure\"; the message includes root.get(\"errors\").toString() (or 'Unknown error' if absent).","commonSituations":"Corrupt or encrypted PDF the backend cannot parse; backend model error on a specific page; backend dependency (OCR/table model) missing or crashed; out-of-memory on a very large document.","solutions":["Read the errors fragment in the message to find the failing page/step","Decrypt the PDF (remove password) before sending if it is encrypted","Retry with a smaller page range to isolate the failing page","Check server logs and restart the backend if its model crashed","Fall back to Java-only processing for this document"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    return client.convert(request);\n} catch (IOException e) {\n    if (e.getMessage().startsWith(\"Docling Fast Server processing failed\")) {\n        // backend rejected the doc — fall back to Java pipeline\n        log.warn(\"backend failed, using Java-only: {}\", e.getMessage());\n        return null; // signal caller to use Java extraction\n    }\n    throw e;\n}","preventionTips":["Decrypt PDFs before sending (encrypted PDFs often trigger status:failure)","Log the errors fragment to identify the failing page/step","Isolate failing pages by splitting the page range"],"tags":["hybrid","docling-fast","backend-error","response-parsing"],"backgroundTag":null,"analyzedSha":"a7789b8e77dd05e2b8659eb3ea12fc458f80bfb8","analyzedAt":"2026-08-14T05:22:03.953Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}