{"record":{"id":"83a8d1f31c601def","repo":"apache/seatunnel","slug":"source-request-split-failed","errorCode":null,"errorMessage":"source request split failed.","messagePattern":"source request split failed\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/flow/SourceFlowLifeCycle.java","lineNumber":417,"sourceCode":"    /**\n     * Sends a split request to the remote split enumerator.\n     *\n     * <p>Sends a {@link RequestSplitOperation} to the enumerator, requesting new splits to be\n     * assigned to this reader. The enumerator will respond asynchronously by calling {@link\n     * #receivedSplits(List)}.\n     *\n     * @throws RuntimeException if the split request fails due to communication errors\n     */\n    public void requestSplit() {\n        try {\n            runningTask\n                    .getExecutionContext()\n                    .sendToMember(\n                            new RequestSplitOperation(currentTaskLocation, enumeratorTaskLocation),\n                            enumeratorTaskAddress)\n                    .get();\n        } catch (InterruptedException | ExecutionException e) {\n            log.warn(\"source request split failed.\", e);\n            throw new RuntimeException(e);\n        }\n    }\n\n    public void sendSourceEventToEnumerator(SourceEvent sourceEvent) {\n        try {\n            runningTask\n                    .getExecutionContext()\n                    .sendToMember(\n                            new SourceReaderEventOperation(\n                                    enumeratorTaskLocation, currentTaskLocation, sourceEvent),\n                            enumeratorTaskAddress)\n                    .get();\n        } catch (InterruptedException | ExecutionException e) {\n            log.warn(\"source request split failed.\", e);\n            throw new RuntimeException(e);\n        }\n    }","sourceCodeStart":399,"sourceCodeEnd":435,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/flow/SourceFlowLifeCycle.java#L399-L435","documentation":"SourceFlowLifeCycle.requestSplit() sends a RequestSplitOperation to the split enumerator and blocks on the result. If the call is interrupted or the remote execution fails, this warning is logged and a RuntimeException is thrown, failing the reader's split request. The reader cannot read any data until the enumerator assigns it a split.","triggerScenarios":"sendToMember(new RequestSplitOperation(...), enumeratorTaskAddress).get() throws InterruptedException or ExecutionException — enumerator task dead/missing, member down, or reader interrupted during the wait.","commonSituations":"Enumerator crashed after initial registration (e.g. source connection failure during split enumeration); network partition in the Zeta cluster; job cancelled while the reader waits for its split; dynamic split assignment edge cases where the enumerator has no splits left and the operation errors.","solutions":["Check the enumerator task's logs for a crash before this failure; fix the root enumerator error first.","Verify cluster member health and network between nodes; restart failed members.","Rerun the job after the transient cluster issue is resolved.","If it happens with idle/idle-timeout scenarios, review the source's split assignment and idle-reader handling configuration."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"null","typeGuard":"null","tryCatchPattern":"try {\n    sourceFlowLifeCycle.requestSplit();\n} catch (RuntimeException e) {\n    retryWithBackoff(() -> sourceFlowLifeCycle.requestSplit(), 3);\n}","preventionTips":["Monitor enumerator task health and split-enumeration latency","Keep cluster members connected; alert on member-down events","Review source idle-reader/split-assignment configuration for jobs with few splits"],"tags":["zeta-engine","source-reader","split-assignment"],"backgroundTag":"request-timeout","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}