{"record":{"id":"196d8c2f22b721d4","repo":"Tencent/WeKnora","slug":"download-jsonl-status-d","errorCode":null,"errorMessage":"download jsonl status %d","messagePattern":"download jsonl status (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/infrastructure/docparser/paddleocr_vl_cloud_converter.go","lineNumber":275,"sourceCode":"\t\t\t\tText   string            `json:\"text\"`\n\t\t\t\tImages map[string]string `json:\"images\"`\n\t\t\t} `json:\"markdown\"`\n\t\t} `json:\"layoutParsingResults\"`\n\t} `json:\"result\"`\n}\n\nfunc (c *PaddleOCRVLCloudReader) fetchResults(jsonlURL string) (string, map[string]string, error) {\n\tif err := utils.ValidateURLForSSRF(jsonlURL); err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"jsonl URL blocked by SSRF check: %v\", err)\n\t}\n\tclient := utils.NewSSRFSafeHTTPClient(utils.SSRFSafeHTTPClientConfig{Timeout: 120 * time.Second, MaxRedirects: 5})\n\tresp, err := client.Get(jsonlURL)\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"download jsonl: %w\", err)\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn \"\", nil, fmt.Errorf(\"download jsonl status %d\", resp.StatusCode)\n\t}\n\tdata, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn \"\", nil, fmt.Errorf(\"read jsonl body: %w\", err)\n\t}\n\n\ttexts := make([]string, 0)\n\timages := make(map[string]string)\n\tfor _, line := range strings.Split(strings.TrimSpace(string(data)), \"\\n\") {\n\t\tline = strings.TrimSpace(line)\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tvar parsed paddleOCRVLCloudResultLine\n\t\tif err := json.Unmarshal([]byte(line), &parsed); err != nil {\n\t\t\tlogger.Errorf(context.Background(), \"[PaddleOCR-VL Cloud] skip malformed jsonl line: %v\", err)\n\t\t\tcontinue\n\t\t}","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/infrastructure/docparser/paddleocr_vl_cloud_converter.go#L257-L293","documentation":"Protocol error in PaddleOCRVLCloudReader.fetchResults: the SSRF-safe GET for the result JSONL URL returned a non-200 status, so the parsed-output download failed. The %d records the status; distinct from the 'download jsonl' network error raised just above it for transport failures.","triggerScenarios":"Thrown at internal/infrastructure/docparser/paddleocr_vl_cloud_converter.go:275 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry shortly; result files may propagate with delay","Re-run the job if the JSONL URL has expired","Check the embedded status for 403/404 specifics"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}