apache/seatunnel · critical · TaskExecuteException
All candidate sink tables were skipped in Flink starter.
Error message
All candidate sink tables were skipped in Flink starter.
What it means
TaskExecuteException thrown in AbstractSinkExecuteProcessor.execute when all candidate sink tables were skipped during pre-write processing, so no sink was written for the job. MultiTableFailureHelper renders a per-table failure summary listing why each table was skipped.
Source
Thrown at seatunnel-core/seatunnel-flink-starter/seatunnel-flink-starter-common/src/main/java/org/apache/seatunnel/core/starter/flink/execution/AbstractSinkExecuteProcessor.java:219
boolean sinkParallelism = sinkConfig.hasPath(EnvCommonOptions.PARALLELISM.key());
boolean envParallelism = envConfig.hasPath(EnvCommonOptions.PARALLELISM.key());
int parallelism =
sinkParallelism
? sinkConfig.getInt(EnvCommonOptions.PARALLELISM.key())
: envParallelism
? envConfig.getInt(EnvCommonOptions.PARALLELISM.key())
: 1;
DataStreamSink<SeaTunnelRow> dataStreamSink =
createVersionSpecificDataStreamSink(stream, sink, parallelism, sinkConfig);
if (sinkParallelism || envParallelism) {
dataStreamSink.setParallelism(parallelism);
}
}
if (!createdAnySink && !skippedTables.isEmpty()) {
throw new TaskExecuteException(
MultiTableFailureHelper.formatFailedTableSummary(
"All candidate sink tables were skipped in Flink starter.",
skippedTables));
}
if (createdAnySink && !skippedTables.isEmpty()) {
LOGGER.warn(
MultiTableFailureHelper.formatFailedTableSummary(
"Some sink tables were skipped in Flink starter.", skippedTables));
}
// the sink is the last stream
return null;
}
/** Create version-specific DataStreamSink with multi-table and parallelism support. */
protected abstract DataStreamSink<SeaTunnelRow> createVersionSpecificDataStreamSink(
DataStreamTableInfo stream, SeaTunnelSink sink, int parallelism, Config sinkConfig);
// if not support multi table, rollbackView on GitHub (pinned to cf67b549a7)
Solutions
- Inspect the per-table skip reasons in the exception summary and fix each root cause
- Configure save_mode so the sink can create or evolve target tables
- Confirm connector/table compatibility for the target storage
Defensive patterns
Strategy: validation
Validate before calling
// verify each target table's schema compatibility before submit sink.factory().checkTargetTables(catalogTables).forEach(problem -> log.warn(problem));
Try / catch
try {
processor.execute();
} catch (TaskExecuteException e) {
log.error("All sink tables skipped: {}", e.getMessage());
throw e;
} Prevention
- Align source and target table schemas before submission
- Configure save_mode to auto-create/evolve target tables
- Validate connector support for all configured tables
When it happens
Trigger: A Flink starter job where every sink (or every table of a multi-table sink) was skipped — typically due to failed save-mode handling, unsupported schema, or table-level pre-checks — leaving createdAnySink false with a non-empty skippedTables list.
Common situations: Target tables missing and auto-creation disabled; schema incompatibility between source data and target table; sink connector rejecting all configured catalog tables.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- All candidate sink tables were skipped in Flink starter.
- Some sink tables were skipped in Flink starter.
- Skip failed sink table in Flink starter: {}
- Some sink tables were skipped in Flink starter.
- Skip failed sink table in Flink starter: {}
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/d5e7a62268a5f860.
Report an issue: GitHub.