apache/seatunnel · error

source request split failed.

Error message

source request split failed.

What it means

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.

Solutions

  1. Check the enumerator task's logs for a crash before this failure; fix the root enumerator error first.
  2. Verify cluster member health and network between nodes; restart failed members.
  3. Rerun the job after the transient cluster issue is resolved.
  4. If it happens with idle/idle-timeout scenarios, review the source's split assignment and idle-reader handling configuration.
Defensive patterns

Strategy: retry

Validate before calling

null

Type guard

null

Try / catch

try {
    sourceFlowLifeCycle.requestSplit();
} catch (RuntimeException e) {
    retryWithBackoff(() -> sourceFlowLifeCycle.requestSplit(), 3);
}

Prevention

When it happens

Trigger: sendToMember(new RequestSplitOperation(...), enumeratorTaskAddress).get() throws InterruptedException or ExecutionException — enumerator task dead/missing, member down, or reader interrupted during the wait.

Common situations: 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.

Understand the failure class

Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/83a8d1f31c601def. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/flow/SourceFlowLifeCycle.java:417

    /**
     * Sends a split request to the remote split enumerator.
     *
     * <p>Sends a {@link RequestSplitOperation} to the enumerator, requesting new splits to be
     * assigned to this reader. The enumerator will respond asynchronously by calling {@link
     * #receivedSplits(List)}.
     *
     * @throws RuntimeException if the split request fails due to communication errors
     */
    public void requestSplit() {
        try {
            runningTask
                    .getExecutionContext()
                    .sendToMember(
                            new RequestSplitOperation(currentTaskLocation, enumeratorTaskLocation),
                            enumeratorTaskAddress)
                    .get();
        } catch (InterruptedException | ExecutionException e) {
            log.warn("source request split failed.", e);
            throw new RuntimeException(e);
        }
    }

    public void sendSourceEventToEnumerator(SourceEvent sourceEvent) {
        try {
            runningTask
                    .getExecutionContext()
                    .sendToMember(
                            new SourceReaderEventOperation(
                                    enumeratorTaskLocation, currentTaskLocation, sourceEvent),
                            enumeratorTaskAddress)
                    .get();
        } catch (InterruptedException | ExecutionException e) {
            log.warn("source request split failed.", e);
            throw new RuntimeException(e);
        }
    }

View on GitHub (pinned to cf67b549a7)