{"record":{"id":"c1cc71f3080cba66","repo":"apache/seatunnel","slug":"some-sink-tables-were-skipped-in-flink-starter","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-13-starter/src/main/java/org/apache/seatunnel/core/starter/flink/execution/SinkExecuteProcessor.java","lineNumber":235,"sourceCode":"                                        \"BroadcastSchemaHandler\",\n                                        TypeInformation.of(SeaTunnelRow.class),\n                                        new BroadcastSchemaSinkOperator())\n                                .name(\"BroadcastSchemaHandler\")\n                                .setParallelism(parallelism);\n            }\n            DataStreamSink<SeaTunnelRow> dataStreamSink =\n                    ds.sinkTo(new FlinkSink<>(sink, stream.getCatalogTables(), parallelism))\n                            .name(String.format(\"%s-Sink\", sink.getPluginName()));\n            dataStreamSink.setParallelism(parallelism);\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    // 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;\n        }\n        if (sinks.values().stream().anyMatch(sink -> !(sink instanceof SupportMultiTableSink))) {\n            LOGGER.info(\"Unsupported multi table sink api, rollback to sink template\");\n            // choose the first sink","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-13-starter/src/main/java/org/apache/seatunnel/core/starter/flink/execution/SinkExecuteProcessor.java#L217-L253","documentation":"In SinkExecuteProcessor.execute (Flink 1.3 starter), when some but not all candidate sink tables were skipped due to per-table write failures, the processor logs this warning summarizing which tables were skipped and why, while still building the Flink job for the successfully created sinks. It is a partial-failure signal: the job runs, but data for the listed tables will not be written.","triggerScenarios":"During execute(), one or more sink DataStream/tables failed during creation (exception caught by logSkippedTable and added to skippedTables) while at least one other sink was created successfully (createdAnySink == true).","commonSituations":"Multi-table CDC jobs where one downstream table has an incompatible schema or missing target table; permission problems on a single database; one connector config error among several otherwise-valid sink tables.","solutions":["Inspect the formatted skipped-table summary in the log to identify the failing table path, plugin, phase, and root cause error.","Fix the specific table's issue (create missing target table, fix schema/type mismatch, correct credentials) and rerun.","If failing tables should abort the whole job instead of being skipped, change the sink-level failure handling configuration (per-table failure tolerance) to fail-fast."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Search logs for 'Skip failed sink table' to find per-table root causes before the summary","Validate target tables/schemas exist for every source table before launching multi-table jobs","Configure per-table failure handling to fail-fast if skipping is unacceptable"],"tags":["flink","sink","multi-table","partial-failure"],"backgroundTag":"partial-table-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"}