{"record":{"id":"cd2676b556b82dc0","repo":"cocoindex-io/cocoindex","slug":"result-get-message-unknown-error","errorCode":null,"errorMessage":"result.get(\"Message\", \"Unknown error\")","messagePattern":"result\\.get\\(\"Message\", \"Unknown error\"\\)","errorType":"exception","errorClass":"DorisStreamLoadError","httpStatus":null,"severity":"error","filePath":"python/cocoindex/connectors/doris/_target.py","lineNumber":655,"sourceCode":"                text = await response.text()\n\n        if status_code in (401, 403):\n            raise DorisAuthError(\n                f\"Authentication failed: HTTP {status_code}\",\n                host=config.fe_host,\n                port=config.fe_http_port,\n            )\n\n        try:\n            result: dict[str, Any] = json.loads(text)\n        except json.JSONDecodeError:\n            raise DorisStreamLoadError(\n                f\"Invalid response: {text[:200]}\", status=\"ParseError\"\n            )\n\n        load_status = result.get(\"Status\", \"Unknown\")\n        if load_status not in (\"Success\", \"Publish Timeout\"):\n            raise DorisStreamLoadError(\n                result.get(\"Message\", \"Unknown error\"),\n                status=load_status,\n                error_url=result.get(\"ErrorURL\"),\n                loaded_rows=result.get(\"NumberLoadedRows\", 0),\n                filtered_rows=result.get(\"NumberFilteredRows\", 0),\n            )\n        return result\n\n    retry_config = RetryConfig(\n        max_retries=config.max_retries,\n        base_delay=config.retry_base_delay,\n        max_delay=config.retry_max_delay,\n    )\n    try:\n        return await _with_retry(\n            do_stream_load, retry_config, f\"Stream Load to {table_name}\"\n        )\n    finally:","sourceCodeStart":637,"sourceCodeEnd":673,"githubUrl":"https://github.com/cocoindex-io/cocoindex/blob/e84aa99b3292c5270a4b313b2a7137ad9ce8ab3b/python/cocoindex/connectors/doris/_target.py#L637-L673","documentation":"The stream load completed the HTTP call and returned JSON, but its Status field was neither 'Success' nor 'Publish Timeout'. The connector raises DorisStreamLoadError carrying Doris's own Message (defaulting to 'Unknown error' when absent), plus status, ErrorURL, and loaded/filtered row counts.","triggerScenarios":"Doris rejects or partially fails the load: schema mismatch (wrong column count/types), fail-on-strict-quality filtering all rows, label already exists, or internal backend errors reported via Status values like 'Fail'/'Cancelled'.","commonSituations":"Record columns not matching the Doris table schema; all rows filtered due to data quality rules; duplicate stream load label reuse; disk full / backend failure.","solutions":["Read the errorURL field in the exception to fetch per-row failure details from Doris","Compare declared columns/types with the actual Doris table schema (run _generate_create_table_ddl output vs SHOW CREATE TABLE)","Check loaded_rows/filtered_rows in the exception to see if rows were filtered by quality rules","Avoid reusing stream load labels; use a fresh label per load"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    await target.sync()\nexcept DorisStreamLoadError as e:\n    logger.error(\"Load failed: status=%s rows=%s filtered=%s url=%s\",\n                 e.status, e.loaded_rows, e.filtered_rows, e.error_url)\n    if e.error_url:\n        details = await fetch(e.error_url)","preventionTips":["Match record columns/types to the Doris table schema","Check ErrorURL for per-row failures","Use unique stream load labels per load","Monitor loaded_rows vs filtered_rows to catch quality filtering"],"tags":["doris","stream-load","load-failure","http"],"backgroundTag":"api-error-response","analyzedSha":"e84aa99b3292c5270a4b313b2a7137ad9ce8ab3b","analyzedAt":"2026-09-08T15:59:19.997Z","contentChangedAt":"2026-09-08T15:59:19.997Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}