apache/seatunnel · error · IllegalArgumentException
must in [SHARED, ISOLATED]
Error message
${CONNECTOR_JAR_STORAGE_MODE} must in [SHARED, ISOLATED] What it means
parseConnectorJarStorageConfig validates CONNECTOR_JAR_STORAGE_MODE against [SHARED, ISOLATED] (case-insensitive; blank tolerated). A non-blank value outside that set throws IllegalArgumentException naming the option key, guarding ConnectorJarStorageMode.valueOf.
Solutions
- Set the value to SHARED or ISOLATED (case-insensitive).
- Remove or blank the key to use the default ConnectorJarStorageMode.
- Confirm supported modes in the docs for your engine version.
Example fix
# before connector-jar-storage: mode: CLASSIC # after connector-jar-storage: mode: SHARED
Defensive patterns
Strategy: validation
Validate before calling
String mode = props.getProperty("connector-jar-storage.mode", "").trim().toUpperCase(Locale.ROOT);
if (!mode.isEmpty() && !List.of("SHARED", "ISOLATED").contains(mode)) {
throw new IllegalArgumentException("connector-jar-storage.mode must be SHARED or ISOLATED, got " + mode);
} Try / catch
try {
connectorJarStorageConfig.setStorageMode(ConnectorJarStorageMode.valueOf(mode));
} catch (IllegalArgumentException e) {
throw new ConfigValidationException("connector-jar-storage.mode must be SHARED|ISOLATED", e);
} Prevention
- Only use SHARED or ISOLATED; leave blank/absent for the default.
- Add enum whitelist validation to config CI.
- Check version docs when upgrading, since accepted sets can evolve.
When it happens
Trigger: Engine YAML contains the connector-jar storage mode key with a value like 'CLUSTER' or a misspelling; parseEngineConfig -> parseConnectorJarStorageConfig performs the whitelist check.
Common situations: Typos in seatunnel.yaml; users guessing mode names from other frameworks ('CLASSIC', 'LOCAL'); leftover values from a version with a different mode set.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- input.multiline.match must be "after" or "before".
- input.on-error must be "skip" or "fail".
- input.output-format.type must be "line" or "json".
- must in [ALL, OFF, PART]
- Unknown compression
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/cea36c52b8a94291.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/YamlSeaTunnelDomConfigProcessor.java:464
return checkpointPluginConfig;
}
private ConnectorJarStorageConfig parseConnectorJarStorageConfig(
Node connectorJarStorageConfigNode) {
ConnectorJarStorageConfig connectorJarStorageConfig = new ConnectorJarStorageConfig();
for (Node node : childElements(connectorJarStorageConfigNode)) {
String name = cleanNodeName(node);
if (ServerConfigOptions.MasterServerConfigOptions.ENABLE_CONNECTOR_JAR_STORAGE
.key()
.equals(name)) {
connectorJarStorageConfig.setEnable(getBooleanValue(getTextContent(node)));
} else if (ServerConfigOptions.MasterServerConfigOptions.CONNECTOR_JAR_STORAGE_MODE
.key()
.equals(name)) {
String mode = getTextContent(node).toUpperCase();
if (StringUtils.isNotBlank(mode)
&& !Arrays.asList("SHARED", "ISOLATED").contains(mode)) {
throw new IllegalArgumentException(
ServerConfigOptions.MasterServerConfigOptions.CONNECTOR_JAR_STORAGE_MODE
+ " must in [SHARED, ISOLATED]");
}
connectorJarStorageConfig.setStorageMode(ConnectorJarStorageMode.valueOf(mode));
} else if (ServerConfigOptions.MasterServerConfigOptions.CONNECTOR_JAR_STORAGE_PATH
.key()
.equals(name)) {
connectorJarStorageConfig.setStoragePath(getTextContent(node));
} else if (ServerConfigOptions.MasterServerConfigOptions
.CONNECTOR_JAR_CLEANUP_TASK_INTERVAL
.key()
.equals(name)) {
connectorJarStorageConfig.setCleanupTaskInterval(
getIntegerValue(
ServerConfigOptions.MasterServerConfigOptions
.CONNECTOR_JAR_CLEANUP_TASK_INTERVAL
.key(),
getTextContent(node)));View on GitHub (pinned to cf67b549a7)