{"record":{"id":"31dfb7b5477ea206","repo":"apache/seatunnel","slug":"should-never-happen","errorCode":"SHOULD_NEVER_HAPPEN","errorMessage":"No Doris stream load node initialized.","messagePattern":"No Doris stream load node initialized\\.","errorType":"error_code","errorClass":"DorisConnectorException","httpStatus":null,"severity":"critical","filePath":"seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/sink/writer/DorisSinkWriter.java","lineNumber":393,"sourceCode":"                if (abortPreCommitOnInit) {\n                    streamLoad.abortPreCommit(labelPrefix, lastCheckpointId + 1);\n                }\n                return new InitializedStreamLoad(node, streamLoad);\n            } catch (Exception e) {\n                closeStreamLoadQuietly(streamLoad, nodeType + \" node \" + node);\n                if (i == nodeCount - 1) {\n                    log.error(\"All {} {} nodes failed, no more nodes to try\", nodeCount, nodeType);\n                    throw new DorisConnectorException(\n                            DorisConnectorErrorCode.STREAM_LOAD_FAILED, e);\n                }\n                log.error(\n                        \"stream load error for {} node: {} with exception: {}\",\n                        nodeType,\n                        node,\n                        e.getMessage());\n            }\n        }\n        throw new DorisConnectorException(\n                DorisConnectorErrorCode.SHOULD_NEVER_HAPPEN,\n                \"No Doris stream load node initialized.\");\n    }\n\n    private void cleanupInitializedStreamLoads(\n            DorisStreamLoad dataStreamLoad, DorisStreamLoad cleanupControlStreamLoad) {\n        closeStreamLoadQuietly(dataStreamLoad, \"data stream load\");\n        if (cleanupControlStreamLoad != dataStreamLoad) {\n            closeStreamLoadQuietly(cleanupControlStreamLoad, \"control stream load\");\n        }\n        scheduledExecutorService.shutdownNow();\n    }\n\n    private void closeStreamLoadQuietly(DorisStreamLoad streamLoad, String streamLoadName) {\n        if (streamLoad == null) {\n            return;\n        }\n        try {","sourceCodeStart":375,"sourceCodeEnd":411,"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#L375-L411","documentation":"initializeStreamLoad loops over candidate Doris nodes attempting to start data/control stream loads; if every candidate fails, it throws a DorisConnectorException with code SHOULD_NEVER_HAPPEN stating 'No Doris stream load node initialized.' It signals that no FE/BE endpoint could be used for the load.","triggerScenarios":"All candidate nodes (from fe.nodes config or discovered BE nodes) failed startLoad in controlHandle/dataHandle paths — connection refused, auth failure, or unexpected HTTP errors for every node.","commonSituations":"Wrong or unreachable fe.nodes config; all BEs down; firewall blocking http_port/webserver_port; DNS misconfiguration; cluster paused/scaled to zero.","solutions":["Verify fe.nodes, fe.http-port and credentials are correct and reachable (curl the FE REST endpoint)","Check BE node status (SHOW BACKENDS) and that BE http (webserver) ports are open","Test with direct_to_be=true / benodes config if FE redirect handling is problematic","Inspect the per-node logged exceptions above the throw to see why each candidate failed"],"exampleFix":"// before\nDoris {\n  fe.nodes = \"doris-fe:8030\"\n}\n// after\nDoris {\n  fe.nodes = \"doris-fe-0.doris-fe-headless:8030,doris-fe-1.doris-fe-headless:8030\"\n}","handlingStrategy":"retry","validationCode":"// preflight: FE reachable?\ncurl -u user:pass http://doris-fe:8030/api/bootstrap\n// BE reachable?\ncurl http://doris-be:8040/api/health","typeGuard":null,"tryCatchPattern":"try { writer.close(); } catch (DorisConnectorException e) { if (e.getErrorCode() == DorisConnectorErrorCode.SHOULD_NEVER_HAPPEN) { /* no node usable: alert ops */ } throw e; }","preventionTips":["List multiple fe.nodes for redundancy","Verify BE http (webserver) ports are open from workers","Preflight connectivity checks in deployment scripts","Use headless service DNS with multiple endpoints in Kubernetes"],"tags":["doris","stream-load","connectivity"],"backgroundTag":"connection-refused","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"}