{"record":{"id":"f946d049a855ed66","repo":"apache/seatunnel","slug":"skip-failed-sink-table-in-flink-starter","errorCode":null,"errorMessage":"Skip failed sink table in Flink starter: {}","messagePattern":"Skip failed sink table 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":301,"sourceCode":"        return new RuntimeException(error);\n    }\n\n    private void logSkippedTable(\n            List<MultiTableFailedTable> currentSkippedTables,\n            List<MultiTableFailedTable> skippedTables,\n            CatalogTable catalogTable,\n            Config sinkConfig,\n            MultiTableFailurePhase phase,\n            Throwable error) {\n        MultiTableFailedTable failedTable =\n                MultiTableFailureHelper.buildFailedTable(\n                        catalogTable.getTablePath().getFullName(),\n                        phase,\n                        sinkConfig.getString(PLUGIN_NAME.key()),\n                        error);\n        currentSkippedTables.add(failedTable);\n        skippedTables.add(failedTable);\n        LOGGER.warn(\n                \"Skip failed sink table in Flink starter: {}\",\n                MultiTableFailureHelper.formatFailedTableLine(failedTable),\n                error);\n    }\n}\n","sourceCodeStart":283,"sourceCodeEnd":307,"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#L283-L307","documentation":"SinkExecuteProcessor.logSkippedTable records a failed sink table (table path, phase, plugin name, and the error) into the skipped-tables collections and logs this warning with the formatted failure line and the full exception. It is the mechanism that lets multi-table Flink jobs tolerate a single table failure without aborting the whole job.","triggerScenarios":"During execute(), creating or initializing the sink for one catalog table throws an exception (connection failure, schema mismatch, missing target table, invalid config); the catch block calls logSkippedTable(catalogTable, phase, error).","commonSituations":"Target table absent or schema drift between source and sink; wrong credentials/endpoint for one database in a multi-db pipeline; unsupported data type in one table's schema; transient network error during sink initialization.","solutions":["Read the warning's formatted line and stack trace to find the exact table path, plugin, and root error.","Fix the root cause for that table (create target table, align schema, correct connector options) and rerun the job.","If all tables fail, the companion 'All candidate sink tables were skipped' exception will abort — treat that as a job-level config problem.","Set per-table failure handling to fail the job if silent skipping is undesired for your SLA."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pre-create and schema-check all target sink tables before job launch","Verify connector options and credentials for each sink table in multi-table configs","Keep the warning's exception stack trace; it contains the exact failing phase and error"],"tags":["flink","sink","multi-table","error-tolerance"],"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"}