apache/seatunnel · error · IllegalArgumentException
SeaTunnel job on st-engine submitted target only support the
Error message
SeaTunnel job on st-engine submitted target only support these options: [local, cluster]
What it means
SeaTunnelMasterTargetConverter.convert() throws this IllegalArgumentException when the --master value maps to a MasterType that is not in the whitelist [local, cluster]. The MasterType enum may contain more values (e.g. other deploy targets), but st-engine submission accepts only these two.
Source
Thrown at seatunnel-core/seatunnel-starter/src/main/java/org/apache/seatunnel/core/starter/seatunnel/args/ClientCommandArgs.java:338
}
}
}
public static class SeaTunnelMasterTargetConverter implements IStringConverter<MasterType> {
private static final List<MasterType> MASTER_TYPE_LIST = new ArrayList<>();
static {
MASTER_TYPE_LIST.add(MasterType.LOCAL);
MASTER_TYPE_LIST.add(MasterType.CLUSTER);
}
@Override
public MasterType convert(String value) {
MasterType masterType = MasterType.valueOf(value.toUpperCase());
if (MASTER_TYPE_LIST.contains(masterType)) {
return masterType;
} else {
throw new IllegalArgumentException(
"SeaTunnel job on st-engine submitted target only "
+ "support these options: [local, cluster]");
}
}
}
@Slf4j
public static class MasterTypeValidator implements IParameterValidator {
@Override
public void validate(String name, String value) throws ParameterException {
if (name.equals("-e") || name.equals("--deploy-mode")) {
log.warn(
"\n******************************************************************************************"
+ "\n-e and --deploy-mode deprecated in 2.3.1, please use -m and --master instead of it"
+ "\n******************************************************************************************");
}
}
}View on GitHub (pinned to cf67b549a7)
Solutions
- Use --master local or --master cluster
- Remove --master if the default (client/cluster per your setup) is acceptable
- Validate the value against [local, cluster] before invoking the CLI
Example fix
// before --master yarn // after --master cluster
Defensive patterns
Strategy: validation
Validate before calling
const master = value.toUpperCase();
if (master !== 'LOCAL' && master !== 'CLUSTER') {
throw new Error(`st-engine --master supports only local|cluster, got: ${value}`);
} Type guard
const isZetaMaster = (v) => ['local','cluster'].includes(String(v).toLowerCase());
Try / catch
try {
seatunnel.run(args);
} catch (IllegalArgumentException e) {
if (e.getMessage().contains('[local, cluster]')) {
args.set('--master', 'cluster');
}
} Prevention
- Do not reuse Flink/Spark deploy-mode values (yarn, k8s) for Zeta commands
- Whitelist only local/cluster in wrappers targeting st-engine
- Keep per-engine command templates separate
When it happens
Trigger: Running `--master standalone`, `--master k8s`, or any value that uppercases to a valid MasterType outside the whitelist; also `--master` with a value not in the enum at all (which fails earlier in valueOf with a different message).
Common situations: Copying Flink/Spark deploy-mode values (yarn, k8s) into a Zeta/st-engine command; confusing st-engine's master options with those of other engines.
Related errors
- Unsupported dry-run mode '${value}'. Currently only [static,
- The plugin type of seaTunnel only support these options: [so
- Plugin type must be one of: [source, sink, transform]
- Invalid argument , should have 2 parts
- Invalid filter condition:
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/4218fbeed4ea321e.
Report an issue: GitHub.