{"record":{"id":"67a1bdcfa6ab1907","repo":"apache/seatunnel","slug":"skip-failed-sink-table-in-flink-starter-67a1bd","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-starter-common/src/main/java/org/apache/seatunnel/core/starter/flink/execution/AbstractSinkExecuteProcessor.java","lineNumber":295,"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":277,"sourceCodeEnd":301,"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#L277-L301","documentation":"Emitted by AbstractSinkExecuteProcessor.logSkippedTable when an exception occurs while preparing/creating an individual sink table in the Flink starter. The starter catches the error, records the table in the skipped set, and logs this warning with a formatted failure line and the full exception, allowing the rest of the multi-table job to proceed.","triggerScenarios":"Any exception during sink initialization for a table (writer creation, catalog table preparation, connection failure) inside execute()'s per-table try/catch; logSkippedTable then records it.","commonSituations":"Wrong username/password or unreachable host for one target table; incompatible schema between source and sink table; missing sink plugin jar.","solutions":["Inspect the attached exception (stack trace follows this warning) to find the root cause for that table path.","Fix the sink config or environment for the failing table and resubmit the job.","If the table should fail the whole job instead of being skipped, adjust skip/failure handling for multi-table execution."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// verify sink connectivity per table before job submission\nassertSinkWritable(catalogTable.getTablePath());","typeGuard":null,"tryCatchPattern":"try {\n    job.execute();\n} catch (Exception e) {\n    // check log for 'Skip failed sink table in Flink starter' entries to map which tables lost data\n    reconcileSkippedTables();\n}","preventionTips":["Rotate/check credentials per target database before multi-table runs.","Keep sink connector jars aligned with the SeaTunnel version.","Set up data-completeness checks on the sink side to detect skipped tables."],"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"}