{"record":{"id":"8b9053cc44421d8f","repo":"apache/seatunnel","slug":"some-sink-tables-were-skipped-in-spark-starter","errorCode":null,"errorMessage":"Some sink tables were skipped in Spark starter.","messagePattern":"Some sink tables were skipped 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":209,"sourceCode":"                            classLoader);\n            createdAnySink = true;\n            String applicationId =\n                    sparkRuntimeEnvironment.getSparkSession().sparkContext().applicationId();\n            CatalogTable[] catalogTables =\n                    datasetTableInfo.getCatalogTables().toArray(new CatalogTable[0]);\n            SparkSinkInjector.inject(\n                            dataset.write(), sink, catalogTables, applicationId, parallelism)\n                    .option(\"checkpointLocation\", \"/tmp\")\n                    .save();\n        }\n        if (!createdAnySink && !skippedTables.isEmpty()) {\n            throw new TaskExecuteException(\n                    MultiTableFailureHelper.formatFailedTableSummary(\n                            \"All candidate sink tables were skipped in Spark starter.\",\n                            skippedTables));\n        }\n        if (createdAnySink && !skippedTables.isEmpty()) {\n            log.warn(\n                    MultiTableFailureHelper.formatFailedTableSummary(\n                            \"Some sink tables were skipped in Spark starter.\", skippedTables));\n        }\n        // the sink is the last stream\n        return null;\n    }\n\n    public void handleSaveMode(SeaTunnelSink sink) {\n        if (sink instanceof SupportSaveMode) {\n            Optional<SaveModeHandler> saveModeHandler =\n                    ((SupportSaveMode) sink).getSaveModeHandler();\n            if (saveModeHandler.isPresent()) {\n                try (SaveModeHandler handler = saveModeHandler.get()) {\n                    handler.open();\n                    new SaveModeExecuteWrapper(handler).execute();\n                } catch (Exception e) {\n                    throw new SeaTunnelRuntimeException(HANDLE_SAVE_MODE_FAILED, e);\n                }","sourceCodeStart":191,"sourceCodeEnd":227,"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#L191-L227","documentation":"This warning from the Spark starter's SinkExecuteProcessor.execute indicates that in a multi-table Spark job some sink tables failed and were skipped, but at least one sink was successfully created, so the job proceeds. A formatted per-table failure summary accompanies the message. If all tables had been skipped, a TaskExecuteException ('All candidate sink tables were skipped in Spark starter.') is thrown instead.","triggerScenarios":"During execute(), creating/writing one sink fails (connection, auth, schema) and is recorded via logSkippedTable, while other tables' sinks initialize fine.","commonSituations":"Multi-table writes where one target cluster is unreachable or credentials differ; schema drift on one table; a sink plugin missing for one format.","solutions":["Read the failure summary in the log to identify the failing table path and root cause.","Fix the failing sink's config/environment and rerun the job to backfill its data.","Isolate problematic tables into separate jobs if partial writes are unacceptable."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"for (TablePath tp : sinkTablePaths) { checkSinkReachable(tp); }","typeGuard":null,"tryCatchPattern":"try {\n    job.run();\n} catch (TaskExecuteException e) {\n    // all sink tables skipped in Spark starter - halt and alert\n    throw e;\n}","preventionTips":["Pre-validate each sink target (connectivity, auth, schema) before submission.","Alert on 'sink tables were skipped' warnings in job logs.","Keep Spark connector jars installed and version-matched."],"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"}