apache/seatunnel · error · OptionValidationException
%s[%d]: '%s' must be configured
Error message
%s[%d]: '%s' must be configured
What it means
RabbitmqTableConfigsValidator.evaluate throws OptionValidationException when an entry in tables-configs has a queue-name but no schema. Every per-table entry must declare its own schema so the reader can deserialize that queue's messages.
Source
Thrown at seatunnel-connectors-v2/connector-rabbitmq/src/main/java/org/apache/seatunnel/connectors/seatunnel/rabbitmq/config/RabbitmqTableConfigsValidator.java:69
@Override
public boolean evaluate(ReadonlyConfig config, List<Map<String, Object>> entries)
throws OptionValidationException {
if (config.getOptional(RabbitmqBaseOptions.SCHEMA).isPresent()) {
throw new OptionValidationException(
"Cannot specify both '%s' and root-level '%s'.", TABLE_CONFIGS_KEY, SCHEMA_KEY);
}
for (int i = 0; i < entries.size(); i++) {
ReadonlyConfig entry = ReadonlyConfig.fromMap(entries.get(i));
String queueName = entry.getOptional(RabbitmqBaseOptions.QUEUE_NAME).orElse(null);
if (queueName == null || queueName.trim().isEmpty()) {
throw new OptionValidationException(
"%s[%d]: '%s' must be configured and non-blank",
TABLE_CONFIGS_KEY, i, QUEUE_NAME_KEY);
}
if (!entry.getOptional(RabbitmqBaseOptions.SCHEMA).isPresent()) {
throw new OptionValidationException(
"%s[%d]: '%s' must be configured", TABLE_CONFIGS_KEY, i, SCHEMA_KEY);
}
}
return true;
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Add a schema block to each tables-configs entry
- Verify with the connector docs which schema format is expected inside tables-configs
- If all queues share one schema, you still must declare it per entry when using tables-configs (root schema is rejected)
Example fix
// before
tables-configs = [
{ queue-name = "orders" }
]
// after
tables-configs = [
{ queue-name = "orders", schema = { fields { id = int, name = string } } }
] Defensive patterns
Strategy: validation
Validate before calling
for (int i = 0; i < entries.size(); i++) {
if (!entries.get(i).containsKey("schema")) {
throw new IllegalArgumentException("tables-configs[" + i + "] missing schema");
}
} Try / catch
try {
tablesConfigsValidator.evaluate(config, entries);
} catch (OptionValidationException e) {
System.err.println("Entry error: " + e.getMessage());
} Prevention
- Include a schema in every tables-configs entry — root schema does not apply
- Copy entries from a known-good template that contains schema
- Run RabbitmqTableConfigsValidator locally before submitting
When it happens
Trigger: tables-configs[i] contains queue-name (validated non-blank) but the schema key is missing from that entry.
Common situations: User assumed root schema covers all entries; entry added programmatically without schema; doc example truncated.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- '%s' must be configured when '%s' is used
- Schema config can not be empty
- CONNECT_DATABASE_FAILED
- Cannot specify both '%s' and root-level '%s'.
- %s[%d]: '%s' must be configured and non-blank
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/79fe7e7239c73065.
Report an issue: GitHub.