apache/beam · error · IllegalArgumentException
Unsupported connector ''. Supported connectors are:
Error message
Unsupported connector ''. Supported connectors are:
What it means
DebeziumReadSchemaTransformProvider.parseConnector validates the 'connector' option by delegating to Connectors.valueOf; an unrecognized value throws IllegalArgumentException listing all supported connectors. This runs when the SchemaTransform is constructed.
Source
Thrown at sdks/java/io/debezium/src/main/java/org/apache/beam/io/debezium/DebeziumReadSchemaTransformProvider.java:81
private final Long testLimitMilliseconds;
public DebeziumReadSchemaTransformProvider() {
this(false, -1, Long.MAX_VALUE);
}
@VisibleForTesting
protected DebeziumReadSchemaTransformProvider(
Boolean isTest, Integer recordLimit, Long timeLimitMs) {
this.isTest = isTest;
this.testLimitRecords = recordLimit;
this.testLimitMilliseconds = timeLimitMs;
}
private static Connectors parseConnector(String value) {
try {
return Connectors.valueOf(value);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException(
"Unsupported connector '"
+ value
+ "'. Supported connectors are: "
+ Arrays.toString(Connectors.values()),
e);
}
}
@Override
protected @NonNull @Initialized Class<DebeziumReadSchemaTransformConfiguration>
configurationClass() {
return DebeziumReadSchemaTransformConfiguration.class;
}
@Override
protected @NonNull @Initialized SchemaTransform from(
DebeziumReadSchemaTransformConfiguration configuration) {
View on GitHub (pinned to 12126d8942)
Solutions
- Set connector to one of the values listed in the exception message (exact enum constant names).
- Trim and match case precisely; enum names are typically uppercase engine names.
- Consult DebeziumReadSchemaTransformProvider docs for the accepted connector option values.
- If your engine is missing, use the lower-level DebeziumIO with a full Debezium configuration instead.
Example fix
// before
DebeziumRead.getConnector("postgres-db") // unsupported
// after
DebeziumRead.getConnector("POSTGRES") // supported enum constant Defensive patterns
Strategy: validation
Validate before calling
try { Connectors.valueOf(value.trim()); } catch (IllegalArgumentException e) {
throw new IllegalArgumentException("connector must be one of " + Arrays.toString(Connectors.values()));
} Type guard
static boolean supportedConnector(String v) {
for (Connectors c : Connectors.values()) if (c.name().equals(v)) return true;
return false;
} Prevention
- Use values from the exception's 'Supported connectors are:' list verbatim.
- Trim whitespace from config values before passing them.
- Validate the whole Debezium transform spec with a dry-run before submitting the job.
When it happens
Trigger: Setting the connector option of the Debezium read SchemaTransform (SQL/transform configuration) to a string that is not a Connectors enum constant, e.g. "sqlserver" when unsupported.
Common situations: Copy-pasting a connector name from Debezium docs rather than from the Beam enum, wrong casing, or whitespace around the value.
Related errors
- Cannot create enum from value!
- Unknown DirectoryTreatment: " + directoryTreatment
- Unexpected kind: ${kind}
- Unable to find schema for ${identifier}SchemaTransformProvid
- Unknown ValueKind: <valueKind>
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/b200440873ee7c6b.
Report an issue: GitHub.