{"record":{"id":"21dd773f1dd69a1e","repo":"apache/seatunnel","slug":"skip-failed-sink-table-in-spark-starter","errorCode":null,"errorMessage":"Skip failed sink table in Spark starter: {}","messagePattern":"Skip failed sink table in Spark starter: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/java/org/apache/seatunnel/core/starter/spark/execution/SinkExecuteProcessor.java","lineNumber":259,"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        log.warn(\n                \"Skip failed sink table in Spark starter: {}\",\n                MultiTableFailureHelper.formatFailedTableLine(failedTable),\n                error);\n    }\n}\n","sourceCodeStart":241,"sourceCodeEnd":265,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/java/org/apache/seatunnel/core/starter/spark/execution/SinkExecuteProcessor.java#L241-L265","documentation":"Emitted by the Spark starter's SinkExecuteProcessor.logSkippedTable when an exception occurs while initializing a single sink table. The starter catches the exception, adds the table to the skipped set, and logs this warning with a formatted failure line plus the full error so the remainder of the multi-table job can continue.","triggerScenarios":"Any exception during per-table sink preparation/writer creation inside execute()'s try/catch (bad credentials, unreachable sink, schema incompatibility, missing plugin class).","commonSituations":"One of several output databases is down or has wrong credentials; table schema changed upstream; missing Spark connector jar for one target format.","solutions":["Inspect the stack trace attached to this warning for the failing table's root cause.","Correct that table's sink config or environment and resubmit the job.","Decide explicitly whether skip-on-failure semantics are acceptable for your data pipeline."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"assertSinkWritable(catalogTable.getTablePath());","typeGuard":null,"tryCatchPattern":"try {\n    job.run();\n} catch (Exception e) {\n    reconcileTablesSkippedPerLog(\"Skip failed sink table in Spark starter\");\n}","preventionTips":["Verify per-table credentials and schemas before multi-table jobs.","Monitor skipped-table warnings as pipeline health signals.","Backfill skipped tables after fixing their sink config."],"tags":["spark","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"}