{"record":{"id":"2107a56ad49c77d0","repo":"apache/seatunnel","slug":"commit-failed-2107a5","errorCode":"COMMIT_FAILED","errorMessage":"<loadResult>","messagePattern":"<loadResult>","errorType":"error_code","errorClass":"DorisConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/sink/committer/DorisCommitter.java","lineNumber":256,"sourceCode":"                        : responseStatus);\n    }\n\n    private void handleCommitSuccess(\n            DorisCommitInfo committable, String hostPort, CloseableHttpResponse response)\n            throws IOException {\n        ObjectMapper mapper = new ObjectMapper();\n        if (response.getEntity() != null) {\n            String loadResult = EntityUtils.toString(response.getEntity());\n            Map<String, String> res =\n                    mapper.readValue(loadResult, new TypeReference<HashMap<String, String>>() {});\n            if (!LoadStatus.SUCCESS.equals(res.get(\"status\"))\n                    && !ResponseUtil.isCommitted(res.get(\"msg\"))) {\n                log.error(\n                        \"commit transaction error url:{},TxnId:{},result:{}\",\n                        String.format(COMMIT_PATTERN, hostPort, committable.getDb()),\n                        committable.getTxbID(),\n                        loadResult);\n                throw new DorisConnectorException(\n                        DorisConnectorErrorCode.COMMIT_FAILED, loadResult);\n            } else {\n                log.info(\"load result {}\", loadResult);\n            }\n        }\n    }\n\n    private void sleepBeforeNextAttempt(int attempt) throws IOException {\n        if (attempt < maxRetry) {\n            retrySleeper.sleep(attempt + 1);\n        }\n    }\n\n    private static void sleepBeforeRetry(int retry) throws IOException {\n        try {\n            int shift = Math.min(Math.max(retry - 1, 0), 4);\n            Thread.sleep(1000L * (1L << shift));\n        } catch (InterruptedException ie) {","sourceCodeStart":238,"sourceCodeEnd":274,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/sink/committer/DorisCommitter.java#L238-L274","documentation":"After committing a Doris stream-load transaction, the connector parses the commit response body (loadResult). If the HTTP call succeeded but the JSON result does not report success (and the message does not indicate the txn was already committed), the raw loadResult string is thrown as COMMIT_FAILED. The same string is logged with the commit URL and txn id for debugging.","triggerScenarios":"DorisCommitter.handleCommitSuccess receives a commit response whose 'status' is not Success/OK and whose 'msg' is not a committed-txn message; e.g. 'Fail to get txn ...', 'txn not exist', label already used, or internal error.","commonSituations":"Committing a txn id that Doris already aborted or expired (long checkpoint intervals exceeding txn timeout); duplicate label from re-running a job; FE refusing the commit because the txn was rolled back after a previous failure; cluster overloaded.","solutions":["Read the loadResult string in the error/log — it contains Doris's own status and msg explaining the rejection","Check the txn state with 'show transaction where id=<txbID>' to see if it was aborted/expired","Increase Doris stream_load_default_timeout / txn timeout if checkpoint intervals are long","If the txn does not exist, the data was likely already committed or aborted — verify with ResponseUtil's committed-message handling and check label status via 'show stream load'","Retry the pipeline; persistent commit failures usually require investigating fe.log around the txn id"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { committer.commit(c); } catch (DorisConnectorException e) { /* parse e.getMessage() for Doris status/msg; check 'show transaction where id=<txbID>' */ }","preventionTips":["Set stream-load/txn timeouts comfortably larger than checkpoint interval","Avoid duplicate labels across concurrent jobs writing the same table","Inspect fe.log for the txn id when commits fail"],"tags":["doris","transaction-commit","stream-load"],"backgroundTag":"api-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"}