apache/seatunnel · warning
Failed to broadcast FlushSignal from task {}
Error message
Failed to broadcast FlushSignal from task {} What it means
SourceFlowLifeCycle.onTimerTick periodically broadcasts a FlushSignal via collector.sendFlushSignal. If that call throws, this warning is logged (non-fatal) naming the current task. The flush of source-side buffered data for this tick is skipped; checkpointing may be delayed or marked incomplete for that interval.
Source
Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/task/flow/SourceFlowLifeCycle.java:203
register();
}
/**
* Timer callback invoked by the {@code timerFlushWorker} thread pool.
*
* <p>Acquires the {@code checkpointLock} (the same monitor that {@link #triggerBarrier} uses)
* so that flush signals and barriers are strictly serialized — a FlushSignal either completes
* entirely before a Barrier or queues behind it, never crossing it.
*/
private void onTimerTick() {
if (prepareClose) {
return;
}
try {
collector.sendFlushSignal(
currentTaskLocation.getJobId(), currentTaskLocation.getTaskID());
} catch (Exception e) {
log.warn("Failed to broadcast FlushSignal from task {}", currentTaskLocation, e);
}
}
private Address getEnumeratorTaskAddress() throws ExecutionException, InterruptedException {
return (Address)
runningTask
.getExecutionContext()
.sendToMaster(new GetTaskGroupAddressOperation(enumeratorTaskLocation))
.get();
}
@Override
public void close() throws IOException {
try {
context.getEventListener().onEvent(new ReaderCloseEvent());
reader.close();
super.close();
} finally {View on GitHub (pinned to cf67b549a7)
Solutions
- Usually ignorable if it appears only during job shutdown/cancel; confirm job completed or was cancelled as expected.
- If it appears during normal running, check task/worker health and engine logs around the timestamp for transport or operation failures.
- Retry the job if checkpoint data loss was observed; verify checkpoint interval vs flush interval alignment.
- Upgrade if a known race between timer ticks and task teardown is fixed in a later SeaTunnel version.
Example fix
// before: flush timer keeps firing during task teardown // (race logs this warning at cancel) // after: cancel the flush timer before closing the task sourceFlowLifeCycle.closeFlushTimer(); // ensure timer stopped before cancel completes
Defensive patterns
Strategy: retry
Try / catch
// engine logs and continues; no caller-side hook
if (logContains("Failed to broadcast FlushSignal")) {
verifyJobCompletionOrRestart();
} Prevention
- Ignore during shutdown/cancel windows; only act if it fires during normal run.
- Align checkpoint interval with flush timer so missed flushes are recovered.
- Monitor worker health; transport failures precede this warning.
- Keep the cluster on a stable network between nodes.
When it happens
Trigger: The periodic flush timer fires and sendFlushSignal(jobId, taskID) throws, e.g. because the target operation/transport is unavailable, the task is shutting down, or an internal messaging error occurs.
Common situations: Tasks being cancelled/restarted while the timer tick fires concurrently; cluster node shutdown mid-flush; transient engine-internal communication failures between task and collector.
Related errors
- COMMIT_FAILED
- Failed to flush data in prepareCommit
- Failed to flush data in prepareCommit
- Failed to flush data during prepareCommit()
- WRITE_FAILED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/680355dcc5b18d94.
Report an issue: GitHub.