apache/seatunnel · warning
Some sink tables were skipped in Flink starter.
Error message
Some sink tables were skipped in Flink starter.
What it means
This warning from AbstractSinkExecuteProcessor.execute reports that, in a multi-table Flink job, some sink tables failed to initialize and were skipped, while at least one other sink was created successfully. The job continues with the remaining sinks. (The sibling TaskExecuteException with 'All candidate sink tables were skipped' is thrown when every table failed.) The message is followed by a formatted per-table failure summary.
Source
Thrown at seatunnel-core/seatunnel-flink-starter/seatunnel-flink-starter-common/src/main/java/org/apache/seatunnel/core/starter/flink/execution/AbstractSinkExecuteProcessor.java:225
: 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, rollback
public SeaTunnelSink tryGenerateMultiTableSink(
Map<TablePath, SeaTunnelSink> sinks,
ReadonlyConfig sinkConfig,
ClassLoader classLoader) {
if (sinks.isEmpty()) {
return null;View on GitHub (pinned to cf67b549a7)
Solutions
- Read the formatted summary and per-table cause in the log to identify the failing table and fix its connection/config.
- Rerun the job once the failing sink's issue is resolved so its data is written.
- Split the job if partial writes are unacceptable, and use fail-fast behavior instead of skip semantics.
Defensive patterns
Strategy: try-catch
Validate before calling
// before submission, verify each sink is reachable/configured
for (TablePath tp : sinkTablePaths) { checkSinkConnection(tp); } Try / catch
try {
command.execute(...);
} catch (TaskExecuteException e) {
// all sink tables skipped - inspect formatted summary and abort pipeline
throw new PipelineAbortException(e);
} Prevention
- Test each sink connection independently before multi-table jobs.
- Monitor logs for 'sink tables were skipped' warnings; alert instead of silently continuing.
- Pin sink plugin versions and verify connector jars are installed.
When it happens
Trigger: During execute(), creating a SinkWriter or preparing a sink for one catalog table throws (e.g. connection/auth failure, schema mismatch) and skip logic in logSkippedTable records the table, while other tables' sinks were created successfully.
Common situations: Multi-table jobs where one destination database is down or credentials are wrong; one table's schema drifted; network ACLs blocking one target while others work.
Related errors
- All candidate sink tables were skipped in Flink starter.
- All candidate sink tables were skipped in Flink starter.
- Some sink tables were skipped in Flink starter.
- Skip failed sink table 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/09fae8351606db68.
Report an issue: GitHub.