{"record":{"id":"09fae8351606db68","repo":"apache/seatunnel","slug":"some-sink-tables-were-skipped-in-flink-starter-09fae8","errorCode":null,"errorMessage":"Some sink tables were skipped in Flink starter.","messagePattern":"Some sink tables were skipped in Flink starter\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-core/seatunnel-flink-starter/seatunnel-flink-starter-common/src/main/java/org/apache/seatunnel/core/starter/flink/execution/AbstractSinkExecuteProcessor.java","lineNumber":225,"sourceCode":"                            : envParallelism\n                                    ? envConfig.getInt(EnvCommonOptions.PARALLELISM.key())\n                                    : 1;\n\n            DataStreamSink<SeaTunnelRow> dataStreamSink =\n                    createVersionSpecificDataStreamSink(stream, sink, parallelism, sinkConfig);\n\n            if (sinkParallelism || envParallelism) {\n                dataStreamSink.setParallelism(parallelism);\n            }\n        }\n        if (!createdAnySink && !skippedTables.isEmpty()) {\n            throw new TaskExecuteException(\n                    MultiTableFailureHelper.formatFailedTableSummary(\n                            \"All candidate sink tables were skipped in Flink starter.\",\n                            skippedTables));\n        }\n        if (createdAnySink && !skippedTables.isEmpty()) {\n            LOGGER.warn(\n                    MultiTableFailureHelper.formatFailedTableSummary(\n                            \"Some sink tables were skipped in Flink starter.\", skippedTables));\n        }\n        // the sink is the last stream\n        return null;\n    }\n\n    /** Create version-specific DataStreamSink with multi-table and parallelism support. */\n    protected abstract DataStreamSink<SeaTunnelRow> createVersionSpecificDataStreamSink(\n            DataStreamTableInfo stream, SeaTunnelSink sink, int parallelism, Config sinkConfig);\n\n    // if not support multi table, rollback\n    public SeaTunnelSink tryGenerateMultiTableSink(\n            Map<TablePath, SeaTunnelSink> sinks,\n            ReadonlyConfig sinkConfig,\n            ClassLoader classLoader) {\n        if (sinks.isEmpty()) {\n            return null;","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-starter-common/src/main/java/org/apache/seatunnel/core/starter/flink/execution/AbstractSinkExecuteProcessor.java#L207-L243","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// before submission, verify each sink is reachable/configured\nfor (TablePath tp : sinkTablePaths) { checkSinkConnection(tp); }","typeGuard":null,"tryCatchPattern":"try {\n    command.execute(...);\n} catch (TaskExecuteException e) {\n    // all sink tables skipped - inspect formatted summary and abort pipeline\n    throw new PipelineAbortException(e);\n}","preventionTips":["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."],"tags":["flink","sink","multi-table"],"backgroundTag":"partial-job-failure","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}