apache/seatunnel · error
source register failed.
Error message
source register failed.
What it means
In SourceFlowLifeCycle.register(), a source reader asynchronously registers itself with its split enumerator via SourceRegisterOperation sent to the enumerator's member address. If the send/future is interrupted or fails, the warning is logged and a RuntimeException is thrown, failing the reader's open. Without registration the enumerator never learns about this reader, so split assignment cannot proceed.
Solutions
- Retry the job — transient races between reader and enumerator startup usually resolve on restart.
- Check cluster member connectivity and that the enumerator task did not fail (look for earlier enumerator errors in the log).
- Increase startup-related timeouts if the enumerator is slow to initialize (large split enumeration).
- If persistent, verify the connector's enumerator doesn't crash on init (bad source config, unreachable source system).
Defensive patterns
Strategy: retry
Validate before calling
null
Type guard
null
Try / catch
try {
sourceFlowLifeCycle.register();
} catch (RuntimeException e) {
// retry once; registration races with enumerator startup are usually transient
retryWithBackoff(() -> sourceFlowLifeCycle.register(), 2);
} Prevention
- Ensure enumerator task starts reliably (fix source-config errors first)
- Keep Zeta cluster networking healthy between members
- Watch for enumerator task failures at job start
When it happens
Trigger: sendToMember(...).get() throws InterruptedException (task interrupted) or ExecutionException (remote operation failed: enumerator task not yet running, member unreachable, operation rejected).
Common situations: Enumerator task startup slower than reader startup (race on job start); network instability between Zeta cluster members; enumerator task failed/restarted while readers open; job cancellation interrupting the registration wait.
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
- source request split failed.
- Can not get coordinator service from an active master node.
- can't apply resource request
- can't apply resource request with retry times
- checkpoint restore requires a terminal source job…
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/39b2150e6053b840.
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:363
/**
* Registers this reader with the remote split enumerator.
*
* <p>Sends a {@link SourceRegisterOperation} to the enumerator at the previously resolved
* address, informing it that this reader subtask is ready to receive splits.
*
* @throws RuntimeException if registration fails due to communication errors
*/
private void register() {
try {
runningTask
.getExecutionContext()
.sendToMember(
new SourceRegisterOperation(
currentTaskLocation, enumeratorTaskLocation),
enumeratorTaskAddress)
.get();
} catch (InterruptedException | ExecutionException e) {
log.warn("source register failed.", e);
throw new RuntimeException(e);
}
}
private void startFlushTimer() {
if (flushIntervalMs <= 0) {
return;
}
flushFuture =
runningTask
.getExecutionContext()
.getTaskExecutionService()
.registerTimerFlushTask(
currentTaskLocation, this::onTimerTick, flushIntervalMs);
log.info(
"Registered flush timer for source task {}, intervalMs={}",
currentTaskLocation,
flushIntervalMs);View on GitHub (pinned to cf67b549a7)