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.

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.

Appendix: 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)