apache/seatunnel · error · IllegalArgumentException

connectorIdentify is not supported

Error message

connectorIdentify ${convertorIdentify} is not supported

What it means

DataTypeConvertorFactory.getDataTypeConvertor throws this IllegalArgumentException when the requested convertor identifier is not present in the registry of loaded DataTypeConvertor instances. The lookup is case-insensitive (keys are uppercased), so the identifier simply does not exist among registered convertors.

Solutions

  1. Check the exact convertor identifier string against the DataTypeConvertor implementations available in your plugins directory (identifiers are matched uppercased).
  2. Install the missing connector/convertor plugin with sh bin/install-plugin.sh so its convertor SPI file is on the classpath.
  3. If using a custom convertor, register it via META-INF/services/org.apache.seatunnel.api.table.type.DataTypeConvertor and verify its factoryIdentifier.

Example fix

// before
DataTypeConvertor<?> c = factory.getDataTypeConvertor("MySQL-VARCHAR");
// after
DataTypeConvertor<?> c = factory.getDataTypeConvertor("MySQL"); // valid registered identifier
Defensive patterns

Strategy: validation

Validate before calling

String id = convertorIdentify == null ? null : convertorIdentify.toUpperCase();
if (id == null || !DataTypeConvertorFactory_KNOWN_IDS.contains(id)) {
    throw new IllegalArgumentException("Unknown convertor identifier: " + convertorIdentify);
}

Try / catch

try {
    convertor = factory.getDataTypeConvertor(id);
} catch (IllegalArgumentException e) {
    LOG.error("Unsupported convertor identifier '{}'", id, e);
    throw new ConfigException("Check convertor identifier / installed plugins", e);
}

Prevention

When it happens

Trigger: Calling getDataTypeConvertor(convertorIdentify) with an identifier string that no registered convertor maps to, e.g. a typo like 'mysql-varchar' or a convertor SPI that was never placed on the classpath.

Common situations: Catalog/connector plugins reference a convertor name that does not exist in the SeaTunnel distribution; user passes a custom type-mapping name not registered via SPI; copy-pasted identifier from another database connector.

Related errors


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

Appendix: source

Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/DataTypeConvertorFactory.java:51

        this(Thread.currentThread().getContextClassLoader());
    }

    public DataTypeConvertorFactory(ClassLoader classLoader) {
        ServiceLoader.load(DataTypeConvertor.class, classLoader)
                .forEach(
                        dataTypeConvertor -> {
                            dataTypeConvertorMap.put(
                                    dataTypeConvertor.getIdentity().toUpperCase(),
                                    dataTypeConvertor);
                        });
    }

    public DataTypeConvertor<?> getDataTypeConvertor(String convertorIdentify) {
        checkNotNull(convertorIdentify, "connectorIdentify can not be null");
        if (dataTypeConvertorMap.containsKey(convertorIdentify.toUpperCase())) {
            return dataTypeConvertorMap.get(convertorIdentify.toUpperCase());
        }
        throw new IllegalArgumentException(
                "connectorIdentify " + convertorIdentify + " is not supported");
    }
}

View on GitHub (pinned to cf67b549a7)