apache/seatunnel · error · IllegalArgumentException
SeaTunnel job on flink engine submitted target only support…
Error message
SeaTunnel job on flink engine submitted target only support these options: [local, remote, yarn-session, yarn-per-job, kubernetes-session, yarn-application, kubernetes-application]
What it means
IllegalArgumentException thrown by FlinkCommandArgs' MasterTypeConverter.convert when the -m/--master (deploy target) CLI argument is not one of the supported Flink master types. The converter parses the value into the MasterType enum and then checks membership in MASTER_TYPE_LIST before accepting it.
Solutions
- Pass one of: local, remote, yarn-session, yarn-per-job, kubernetes-session, yarn-application, kubernetes-application
- Check `--help` output of the Flink client for accepted -m values
- Replace dashes with the documented spelling (conversion also tolerates dashes, e.g. yarn-per-job)
Example fix
# before --master yarn-standalone # after --master yarn-session
Defensive patterns
Strategy: validation
Validate before calling
Set<String> allowed = Set.of("local","remote","yarn-session","yarn-per-job","kubernetes-session","yarn-application","kubernetes-application");
if (!allowed.contains(masterArg)) {
throw new IllegalArgumentException("Unsupported --master: " + masterArg);
} Try / catch
try {
args = FlinkCommandArgsBuilder.build(rawArgs);
} catch (IllegalArgumentException e) {
System.err.println("Invalid --master: " + e.getMessage());
} Prevention
- Only pass documented -m values listed in seatunnel.sh --help
- Never copy Spark master values to the Flink client
- Pin client scripts to the supported master list
When it happens
Trigger: Running the Flink starter client with an unsupported master value, e.g. `seatunnel.sh --master local2` or `-m kubernetes` (instead of kubernetes-session/application); valueOf succeeds after dash normalization but the membership check fails.
Common situations: Typo in the master argument; copying Spark-style targets (e.g. yarn-standalone) to Flink; forgetting that Flink accepts session/application variants only.
Understand the failure class
Background: "Unknown argument", "Invalid value", and "must be one of": invalid CLI argument errors explained — this error's family across 35 libraries.
Related errors
- SeaTunnel job on flink engine deploy mode only support…
- Agent is running (pid file ); stop the agent before write…
- All candidate sink tables were skipped in Flink starter.
- All candidate sink tables were skipped in Flink starter.
- checkpoint.interval is set to
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/165fcd54dccdebff.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-core/seatunnel-flink-starter/seatunnel-flink-starter-common/src/main/java/org/apache/seatunnel/core/starter/flink/args/FlinkCommandArgs.java:110
private static final List<MasterType> MASTER_TYPE_LIST = new ArrayList<>();
static {
MASTER_TYPE_LIST.add(MasterType.LOCAL);
MASTER_TYPE_LIST.add(MasterType.REMOTE);
MASTER_TYPE_LIST.add(MasterType.YARN_SESSION);
MASTER_TYPE_LIST.add(MasterType.YARN_PER_JOB);
MASTER_TYPE_LIST.add(MasterType.KUBERNETES_SESSION);
MASTER_TYPE_LIST.add(MasterType.YARN_APPLICATION);
MASTER_TYPE_LIST.add(MasterType.KUBERNETES_APPLICATION);
}
@Override
public MasterType convert(String value) {
MasterType masterType = MasterType.valueOf(value.toUpperCase().replaceAll("-", "_"));
if (MASTER_TYPE_LIST.contains(masterType)) {
return masterType;
} else {
throw new IllegalArgumentException(
"SeaTunnel job on flink engine submitted target only "
+ "support these options: [local, remote, yarn-session, yarn-per-job, kubernetes-session, "
+ "yarn-application, kubernetes-application]");
}
}
}
public static class FlinkDeployModeConverter implements IStringConverter<DeployMode> {
private static final List<DeployMode> DEPLOY_MODE_TYPE_LIST = new ArrayList<>();
static {
DEPLOY_MODE_TYPE_LIST.add(DeployMode.RUN);
DEPLOY_MODE_TYPE_LIST.add(DeployMode.RUN_APPLICATION);
}
@Override
public DeployMode convert(String value) {
DeployMode deployMode = DeployMode.valueOf(value.toUpperCase().replaceAll("-", "_"));View on GitHub (pinned to cf67b549a7)