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

  1. Set connector to one of the values listed in the exception message (exact enum constant names).
  2. Trim and match case precisely; enum names are typically uppercase engine names.
  3. Consult DebeziumReadSchemaTransformProvider docs for the accepted connector option values.
  4. 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

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


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/b200440873ee7c6b. Report an issue: GitHub.