{"record":{"id":"2582a4a6caed0dba","repo":"apache/seatunnel","slug":"deploy-mode-deploymode-not-supported-2582a4","errorCode":null,"errorMessage":"Deploy mode ${deployMode} not supported","messagePattern":"Deploy mode (.+?) not supported","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-core/seatunnel-spark-starter/seatunnel-spark-starter-common/src/main/java/org/apache/seatunnel/core/starter/spark/SparkStarter.java","lineNumber":104,"sourceCode":"    /**\n     * method to get SparkStarter instance, will return {@link ClusterModeSparkStarter} or {@link\n     * ClientModeSparkStarter} depending on deploy mode.\n     */\n    static SparkStarter getInstance(String[] args) {\n        SparkCommandArgs commandArgs =\n                CommandLineUtils.parse(\n                        args,\n                        new SparkCommandArgs(),\n                        EngineType.SPARK3.getStarterShellName(),\n                        true);\n        DeployMode deployMode = commandArgs.getDeployMode();\n        switch (deployMode) {\n            case CLUSTER:\n                return new ClusterModeSparkStarter(args, commandArgs);\n            case CLIENT:\n                return new ClientModeSparkStarter(args, commandArgs);\n            default:\n                throw new IllegalArgumentException(\"Deploy mode \" + deployMode + \" not supported\");\n        }\n    }\n\n    @Override\n    public List<String> buildCommands() throws IOException {\n        setSparkConf();\n        Common.setDeployMode(commandArgs.getDeployMode());\n        Common.setStarter(true);\n        this.jars.addAll(Common.getLibJars());\n        this.jars.addAll(getConnectorJarDependencies());\n        this.jars.addAll(\n                new ArrayList<>(\n                        Common.getThirdPartyJars(\n                                sparkConf.getOrDefault(EnvCommonOptions.JARS.key(), \"\"))));\n        // TODO: override job name in command args, because in spark cluster deploy mode\n        // command-line arguments are read first\n        // if user has not specified job with command line, the job name config in file will not\n        // work","sourceCodeStart":86,"sourceCodeEnd":122,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-starter-common/src/main/java/org/apache/seatunnel/core/starter/spark/SparkStarter.java#L86-L122","documentation":"The common SparkStarter.getInstance (spark-starter-common) chooses between ClusterModeSparkStarter and ClientModeSparkStarter based on deploy mode; any other deploy-mode value throws an IllegalArgumentException 'Deploy mode <x> not supported'.","triggerScenarios":"Spark job submission with a deploy-mode value outside {cluster, client}, such as a typo, wrong case, or an unsupported value passed via command args.","commonSituations":"Typo in --deploy-mode in launch scripts; Kubernetes deploy modes passed to the standard starter; automation tools injecting defaults like 'local'.","solutions":["Set deploy-mode to exactly 'cluster' or 'client'","Check invoking scripts/CI for the value actually passed","Use spark-submit directly for deploy modes the starter doesn't support"],"exampleFix":"// before\nsh bin/seatunnel.sh --deploy-mode local --config job.conf\n// after\nsh bin/seatunnel.sh --deploy-mode cluster --config job.conf","handlingStrategy":"validation","validationCode":"String mode = commandArgs.getDeployMode();\nif (!\"cluster\".equals(mode) && !\"client\".equals(mode)) {\n    throw new IllegalArgumentException(\"Unsupported deploy mode: \" + mode);\n}","typeGuard":null,"tryCatchPattern":"try {\n    SparkStarter.getInstance(args, commandArgs);\n} catch (IllegalArgumentException e) {\n    log.error(\"Valid deploy modes: cluster, client\", e);\n}","preventionTips":["Validate deploy-mode in wrapper scripts before invoking the starter","Restrict automation to the two supported values","Use native spark-submit for unsupported modes (e.g. k8s)"],"tags":["spark","deploy-mode","cli-argument"],"backgroundTag":"invalid-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}