apache/seatunnel · error · SeaTunnelException

tables_configs can not be empty

Error message

tables_configs can not be empty

What it means

Validation in MongodbIncrementalSourceFactory.buildWithConfig: the tables_configs option supplying per-collection table definitions is empty or missing entries, so catalog tables cannot be constructed for the collections to capture.

Solutions

  1. Populate tables_configs with a table definition for each collection to capture
  2. Ensure the number of tables_configs entries matches the collections list
  3. Omit tables_configs if schema should be inferred from sampled documents
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-mongodb/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/mongodb/MongodbIncrementalSourceFactory.java:151 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-mongodb/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/mongodb/MongodbIncrementalSourceFactory.java:151

                    ILLEGAL_ARGUMENT,
                    "The number of collections must be equal to the number of schema tables");
        }
    }

    private List<CatalogTable> buildWithConfig(ReadonlyConfig config) {
        String factoryId = config.get(ConnectorCommonOptions.PLUGIN_NAME).replace("-CDC", "");
        Map<String, Object> schemaMap = config.get(ConnectorCommonOptions.SCHEMA);
        if (schemaMap != null) {
            if (schemaMap.isEmpty()) {
                throw new SeaTunnelException("Schema config can not be empty");
            }
            CatalogTable catalogTable = CatalogTableUtil.buildWithConfig(factoryId, config);
            return Collections.singletonList(catalogTable);
        }
        List<Map<String, Object>> schemaMaps = config.get(ConnectorCommonOptions.TABLE_CONFIGS);
        if (schemaMaps != null) {
            if (schemaMaps.isEmpty()) {
                throw new SeaTunnelException("tables_configs can not be empty");
            }
            return schemaMaps.stream()
                    .map(
                            map ->
                                    CatalogTableUtil.buildWithConfig(
                                            factoryId, ReadonlyConfig.fromMap(map)))
                    .collect(Collectors.toList());
        }
        return Collections.emptyList();
    }
}

View on GitHub (pinned to cf67b549a7)