apache/seatunnel · error · org.apache.seatunnel.api.configuration.util.OptionValidationException
Connector ' ' has unknown option keys: . Please check for…
Error message
Connector '%s' has unknown option keys: %s. Please check for typos. Declared options are: %s
What it means
A configuration validation guard in ConfigValidator.validateUnknownKeys: the user's job config contains keys that are not declared in the connector's OptionRule, usually a typo or an option that does not exist for this connector/version. It fires at connector option-validation time with the user-supplied ReadonlyConfig.
Solutions
- Compare each unknown key against the declared options list shown in the message and fix typos
- Remove options not supported by the connector or plugin version in use
- Consult the connector's official documentation for the correct option names
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigValidator.java:97 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/c30128ee4121a14b.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/configuration/util/ConfigValidator.java:97
/**
* Validates that all user-provided config keys are declared in the connector's OptionRule.
* Unknown keys are treated as errors to catch typos and misconfigured options early.
*
* @param config the user-provided configuration
* @param rule the connector's declared option rule
* @param connectorName the connector name for error messages
* @throws OptionValidationException if unknown keys are detected
*/
public static void validateUnknownKeys(
ReadonlyConfig config, OptionRule rule, String connectorName) {
Set<String> declaredKeys = collectDeclaredKeys(rule);
declaredKeys.addAll(COMMON_KEYS);
List<String> unknownKeys = new ArrayList<>();
validatePaths(config.getSourceMap(), "", declaredKeys, unknownKeys);
if (!unknownKeys.isEmpty()) {
throw new OptionValidationException(
"Connector '%s' has unknown option keys: %s. "
+ "Please check for typos. Declared options are: %s",
connectorName,
unknownKeys,
declaredKeys.stream().sorted().collect(Collectors.toList()));
}
}
private static void validatePaths(
Map<String, Object> map,
String prefix,
Set<String> declaredKeys,
List<String> unknownKeys) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
String fullKey = prefix.isEmpty() ? entry.getKey() : prefix + "." + entry.getKey();
boolean isValid =
declaredKeys.contains(fullKey)View on GitHub (pinned to cf67b549a7)