apache/seatunnel · error · RedisConnectorException
CONFIG_VALIDATION_FAILED
CONFIG_VALIDATION_FAILED
Error message
PluginName: %s, PluginType: %s, Message: %s
What it means
RedisSinkWriter.createSerializationSchema builds the row serialization schema from the configured format. The default branch throws RedisConnectorException (SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED) when the format value is not one the Redis sink supports (e.g. json, text). It wraps the unsupported value in a standard PluginName/PluginType message.
Source
Thrown at seatunnel-connectors-v2/connector-redis/src/main/java/org/apache/seatunnel/connectors/seatunnel/redis/sink/RedisSinkWriter.java:324
"UnSupport redisDataType,only support string,list,hash,set,zset");
}
private SerializationSchema createSerializationSchema(
RedisParameters redisParameters, SeaTunnelRowType rowType) {
RedisBaseOptions.Format format = redisParameters.getFormat();
switch (format) {
case JSON:
return new JsonSerializationSchema(rowType);
case TEXT:
String fieldDelimiter = redisParameters.getFieldDelimiter();
return TextSerializationSchema.builder()
.seaTunnelRowType(rowType)
.delimiter(fieldDelimiter)
.build();
default:
throw new RedisConnectorException(
SeaTunnelAPIErrorCode.CONFIG_VALIDATION_FAILED,
String.format(
"PluginName: %s, PluginType: %s, Message: %s",
RedisBaseOptions.CONNECTOR_IDENTITY,
PluginType.SINK,
"Unsupported format: " + format));
}
}
private String normalizePlaceholders(String input) {
if (input == null) {
return input;
}
Matcher legacyMatcher = LEGACY_PLACEHOLDER_PATTERN.matcher(input);
if (legacyMatcher.find()) {
// Convert legacy format {fieldName} to ${fieldName}
return legacyMatcher.replaceAll("\\$\\{$1\\}");View on GitHub (pinned to cf67b549a7)
Solutions
- Change format in the sink config to a supported value (json or text)
- Match the exact lowercase spelling used by RedisBaseOptions/format enum
- If a new format is needed, add a case in createSerializationSchema returning an appropriate SerializationSchema
Example fix
// before format = "csv" // after format = "json"
Defensive patterns
Strategy: validation
Validate before calling
if (!Set.of("json","text").contains(format)) throw new IllegalArgumentException("Unsupported format: " + format); Try / catch
try { new RedisSinkWriter(...); } catch (RedisConnectorException e) { if (e.getSeaTunnelApiErrorCode() == CONFIG_VALIDATION_FAILED) { /* fix format config */ } throw e; } Prevention
- Only use formats documented for the Redis sink
- Copy format values from a working template config
- Fail fast in CI by instantiating writers from each config variant
When it happens
Trigger: Sink config sets format to an unsupported/misspelled value; createSerializationSchema is invoked during RedisSinkWriter construction or applySchemaChange and hits the switch's default branch.
Common situations: format = "csv" or "jsonl" pasted from another connector's config; case mismatch like "JSON"; config copied from Kafka sink with a format Redis doesn't implement.
Understand the failure class
Background: Config validation failed: what "invalid value for {key}" and settings-rejection errors mean across 19 open-source libraries — this error's family across 19 libraries.
Related errors
- Failed to convert row to JSON
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
- Unsupported data type:
- CommonErrorCode.UNSUPPORTED_DATA_TYPE
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/474acb6b23eb5932.
Report an issue: GitHub.