apache/seatunnel · error · RedisConnectorException

COMMON-06

COMMON-06

Error message

Unsupported format: <format>

What it means

When a schema is configured, buildCatalogTableAndSchema() maps the `format` option to a deserialization schema (json, text, canonical_string?, etc.); an unrecognized format falls to default and throws RedisConnectorException with CommonErrorCode.ILLEGAL_ARGUMENT (COMMON-06). The format determines how Redis values are decoded into SeaTunnel rows.

Solutions

  1. Use a supported format value exactly as documented (e.g. json, text).
  2. Remove the format option if you don't define a schema (a simple text table is used).
  3. Check the connector docs for the supported format list before setting it.

Example fix

// before
format = "csv"
// after
format = "json"
Defensive patterns

Strategy: validation

Validate before calling

Set<String> supported = Set.of("json", "text");
if (schema != null && !supported.contains(format)) throw new IllegalArgumentException("unsupported format: " + format);

Prevention

When it happens

Trigger: buildCatalogTableAndSchema() (called via result) receives a `format` value not in the switch's supported set (e.g. 'csv', 'avro', 'JSON' uppercase, or a misspelling) while a schema is defined, so the default branch executes.

Common situations: Users assuming Redis connector supports the same formats as Kafka (avro, protobuf), or supplying uppercase/typo'd values like 'Json' instead of 'json'.

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/7a81d155e95c4b11. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-redis/src/main/java/org/apache/seatunnel/connectors/seatunnel/redis/config/RedisTableConfig.java:196

            result.catalogTable = CatalogTableUtil.buildWithConfig(config);
            SeaTunnelRowType seaTunnelRowType = result.catalogTable.getSeaTunnelRowType();

            // Create deserialization schema based on format
            RedisBaseOptions.Format format = config.get(FORMAT);
            switch (format) {
                case JSON:
                    result.deserializationSchema =
                            new JsonDeserializationSchema(result.catalogTable, false, false);
                    break;
                case TEXT:
                    result.deserializationSchema =
                            TextDeserializationSchema.builder()
                                    .seaTunnelRowType(seaTunnelRowType)
                                    .delimiter(config.get(FIELD_DELIMITER))
                                    .build();
                    break;
                default:
                    throw new RedisConnectorException(
                            CommonErrorCode.ILLEGAL_ARGUMENT, "Unsupported format: " + format);
            }
        } else {
            // No schema specified, use simple text table
            result.catalogTable = CatalogTableUtil.buildSimpleTextTable();
            result.deserializationSchema = null;
        }

        // Initialize TablePath
        result.tablePath = getTablePath(config, keys);

        // Set keyFieldName with default value based on data type
        RedisDataType dataType = config.get(DATA_TYPE);
        result.keyFieldName = resolveKeyFieldName(config, dataType);

        return result;
    }
}

View on GitHub (pinned to cf67b549a7)