{"record":{"id":"eb8039b7b7f66069","repo":"apache/seatunnel","slug":"stream-load-failed-eb8039","errorCode":"STREAM_LOAD_FAILED","errorMessage":"stream load error: <message>, see more in <errorURL>","messagePattern":"stream load error: <message>, see more in <errorURL>","errorType":"error_code","errorClass":"DorisConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/sink/writer/DorisSinkWriter.java","lineNumber":277,"sourceCode":"        RespContent respContent = flush();\n        if (!dorisSinkConfig.getEnable2PC() || respContent == null) {\n            return Optional.empty();\n        }\n        long txnId = respContent.getTxnId();\n\n        return Optional.of(new DorisCommitInfo(controlHostPort, dorisStreamLoad.getDb(), txnId));\n    }\n\n    private RespContent flush() throws IOException {\n        // disable exception checker before stop load.\n        checkState(dorisStreamLoad != null);\n        RespContent respContent = dorisStreamLoad.stopLoad();\n        if (respContent != null && !DORIS_SUCCESS_STATUS.contains(respContent.getStatus())) {\n            String errMsg =\n                    String.format(\n                            \"stream load error: %s, see more in %s\",\n                            respContent.getMessage(), respContent.getErrorURL());\n            throw new DorisConnectorException(DorisConnectorErrorCode.STREAM_LOAD_FAILED, errMsg);\n        }\n        return respContent;\n    }\n\n    /**\n     * Finishes the current non-2PC Stream Load and opens a new one when the Zeta engine delivers a\n     * timer flush signal.\n     */\n    private void timerFlush() throws IOException {\n        checkLoadException();\n        flush();\n        startLoad(labelGenerator.generateLabel(lastCheckpointId));\n    }\n\n    @Override\n    public List<DorisSinkState> snapshotState(long checkpointId) {\n        checkState(dorisStreamLoad != null);\n        startLoad(labelGenerator.generateLabel(checkpointId + 1));","sourceCodeStart":259,"sourceCodeEnd":295,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/sink/writer/DorisSinkWriter.java#L259-L295","documentation":"Thrown in DorisSinkWriter.flush after stopLoad() returns a RespContent whose status is not in DORIS_SUCCESS_STATUS (e.g. Fail, Fail-just-required). The message embeds Doris's own error message and an errorURL that points to the detailed rejected-row log on the BE.","triggerScenarios":"Any stream load commit (flush from write, timerFlush, applySchemaChange pre-flush, or close) where Doris responds with a failure status in the load response JSON.","commonSituations":"Malformed rows rejected by Doris (wrong column count/format); JSON parse errors on BE; value out of range or type mismatch; label issues; memory limits exceeded on BE during load.","solutions":["Fetch the errorURL from the exception message and inspect the rejected rows","Fix data issues: column count/types/format must match the Doris table schema","Check max_filter_ratio / stream load properties if some bad rows are acceptable","Verify timezone and date formats for temporal columns","Increase BE load memory limits if the failure is resource-related"],"exampleFix":"// before (bad data)\n{\"id\": \"abc\", \"ts\": \"not-a-date\"}\n// after (aligned with table schema)\n{\"id\": 123, \"ts\": \"2026-09-10 00:00:00\"}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { writer.flush(); } catch (DorisConnectorException e) { if (e.getMessage().contains(\"stream load error\")) { String url = extractErrorURL(e.getMessage()); log.error(\"rejected rows at {}\", url); } throw e; }","preventionTips":["Validate row shape against the Doris table schema before writing","Set a sensible max_filter_ratio for tolerant loads","Monitor errorURL logs for recurring bad rows","Align date/number formats with Doris expectations"],"tags":["doris","stream-load","data-quality"],"backgroundTag":"http-error-response","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}